文档详情

UDP编程初步.ppt

发布:2017-07-02约2.03千字共10页下载文档
文本预览下载声明
哈尔滨工业大学计算机系代亚非 UDP编程初步 Datagram TCP/IP传输层由两个并列的协议:TCP,UDP。 一般套接字(TCP)提供一个可靠的传输模型作为两个网络端点的字节流传输基础,有纠错能力。 UDP没有保持的连接和数据流,数据报是一个网络上发送的独立信息,它的到达,到达时间,以及内容不能得到保证。 Datagram TCP提供高可靠性服务,适用于一次要传输交换大量报文的情况,信道上传递的包不需要源地址和目的地址。 UDP提供高效率服务,适用于依次传输交换少量报文的情形 (如数据库查询),每个数据包要包含目的地址和端口号。 数据报文的使用以包为中心:打包,拆包。 Java.net包支持两种不同的在网络上送数据的方法:一般套接字和数据报文套接字。 Datagram 发出报文的一般步骤如下: 1. 定义数据成员 DatagramSocket socket;(数据报套接字) DatagramPacket packet;(数据报文包) InetAddress address;(用来存放接收方的地址) int port; (用来存放接收方的端口号) 2. 创建数据报套接字对象 try {socket=new DatagramSocket(1111);} catch(java.net.SocketException e) {} socket 绑定到一个本地的可用端口,等待接收客户的请求。 Datagram 3.分配并填写数据缓冲区(一个字节类型的数组) byte[] Buf=new byte[256]; 存放从客户端接收的信息 4.创建报文包对象(DatagramPacket对象) packet=new DatagramPacket(buf, buf.length); 用来从socket接收数据 5. 等待接收报文 socket.receive(packet); 处于阻塞状态,即在客户的报文到来之前一直等待。 Datagram 6. 从获得的报文包中得到对方的地址和端口号 InetAddress address=packet.getAddress(); int port=packet.getPort(); 7. 建立发送报文包,通过socket发送该报文信息 packet=new DatagramPacket (buf,buf.length, address,port); 发送信息必须先存入buf中。 8. 发送数据包 然后关闭socket socket.send(packet); socket.close(); Datagram 接收包的步骤如下: 1. 定义数据成员 int port; InetAddress address; DatagramSocket socket; DatagramPacket packet; byte[] sendBuf=new byte[256]; 2. 建立socket socket=new DatagramSocket(); Datagram 3. 向接收方发出请求报文 address=InetAddress.getByName(“127.0.0.1”); port=parseInt(“1111”); packet=new DatagramPacket(sendBuf,256,address,port); socket.send(packet); 这个包带有客户端的信息 4. 等待应答 packet=new DatagramPacket(sendBuf,256); socket.receive(packet);(如果没有到就一直等待,因此实用程序要设置时间限度) Datagram 5. 处理接收到的数据 String received=new String(packet.getData(),0); System.out.println(received); 数据报套接字首先是强调发送方和接收方的区别,同时也指出服务器和客户之间的不同: 一个客户机必须事先知道服务器的地址和端口,以便进行初始连接 一个服务器从它接收到的数据报文中读取客户端的地址和端口. Datagram . socket server client datagram server client 建立数据报socket(); 建立一个报文包packet 等待请求报文 建
显示全部
相似文档