预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

android开发之socket编程UDP和TCP通信实现 原理图 应用程序通过套接字通信,其协议如下: UDP:把数据打包后直接发送给相应的IP,数据大小有限制,连接不可靠。 TCP:服务器与客户端协议必须匹配,即都是用TCP协议,先建立连接,再发送数据,其连接可靠。通信方式如下图所示: 代码示例 UDP通信: UDP使用DatagramSocket对象实现数据交互。 客户端 客户端示例代码如下: importjava.net.DatagramPacket; importjava.net.DatagramSocket; importjava.net.InetAddress; publicclassClient { publicstaticvoidmain(String[]args) { try { //创建一个DatagramSocket对象,不要有端口号,否则设置的端口被本类独占。 DatagramSocketsocket=newDatagramSocket(); //创建一个InetAddress InetAddressserverAddress=InetAddress.getByName("127.0.0.1"); //创建传输字符串 Stringstr="hello"; //转换成字节数组 bytedata[]=str.getBytes(); //创建以供DatagramPacket对象,指定其发送地址和端口号 DatagramPacketpacket=newDatagramPacket(data,data.length, serverAddress,4567); //调用socket对象的send()方法发送数据 socket.send(packet); } catch(Exceptione) { e.printStackTrace(); } } } 服务器端 服务器示例代码如下: importjava.io.IOException; importjava.net.DatagramPacket; importjava.net.DatagramSocket; importjava.net.SocketException; publicclassServer { publicstaticvoidmain(String[]args) { //创建一个DatagramSocket对象,指定端口为4567 try { DatagramSocketsocket=newDatagramSocket(4567); bytedata[]=newbyte[1024]; //创建一个空DatagramPacket对象 DatagramPacketpacket=newDatagramPacket(data,data.length); //使用receiver方法接手客户端所发送到数据,如果客户端没有发送数据,进程阻塞 socket.receive(packet); Stringresult=newString(packet.getData(),packet.getOffset(), packet.getLength()); System.out.println("result-------->"+result); } catch(SocketExceptione) { e.printStackTrace(); } catch(IOExceptione) { e.printStackTrace(); } } } 运行结果: PS:Windows下查看端口: netstat-n-a|find"4567" TCP通信: TCP通信需先建立连接,然后进行数据通信。 客户端 importjava.io.FileInputStream; importjava.io.IOException; importjava.io.InputStream; importjava.io.OutputStream; importjava.net.Socket; importjava.net.UnknownHostException; publicclassClient { publicstaticvoidmain(String[]args) { try { //创建一个Socket对象,指定服务器端的IP地址和端口号 Socketsocket=newSocket("127.0.0.1",4567); //使用InputStream读取硬盘上的文件 InputStreaminputStream=newFileInputStream("D:\\aa.txt"); //从Socket当中得到OutputStream Out