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

亲,该文档总共29页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

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

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

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

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

第3章UDP协议网络编程UDP协议是无连接的协议,它以数据报作为数据传输的载体。数据报是一个在网络上发送的独立信息,它的到达、到达时间以及内容本身等都不能得到保证。数据报的大小是受限制的,每个数据报的大小限定在64KB以内。 UDP协议无需在发送方和接收方建立连接,但也可以先建立连接。数据报在网上可以以任何可能的路径传往目的地。 在Java中,基于UDP协议实现网络通信的类有三个: 用于表达通信数据的数据报类DatagramPacket 用于进行端到端通信的类DatagramSocket 用于组播通信的类MulticastSocket。类DatagramPacket 构造方法 publicDatagramPacket(byte[]buf,intlength) publicDatagramPacket(byte[]buf,intoffset,intlength):这两个方法用于接收数据 publicDatagramPacket(byte[]buf,intlength,InetAddressaddress,intport) publicDatagramPacket(byte[]buf,intoffset,intlength,InetAddressaddress,intport):这两个方法用于发送数据 获取数据——获取接收报中的信息 publicInetAddressgetAddress() publicbyte[]getData() publicintgetLength() publicintgetOffset() publicintgetPort() 设置数据——设置发送报中的信息 setAddress(InetAddressiaddr)、setPort(intiport)、setData(byte[]buf)、setData(byte[]buf,intoffset,intlength)、setLength(intlength)类DatagramSocket 构造方法 publicDatagramSocket() publicDatagramSocket(intport):在指定的端口通信 publicDatagramSocket(intport,InetAddressladdr):在指定的地点运行 这三个方法都将抛出例外SocketException,程序中需要捕获处理。 最主要的方法——发送与接收数据报 publicvoidreceive(DatagramPacketp) publicvoidsend(DatagramPacketp) 这两个方法都将抛出例外IOException,程序中需要捕获处理。 其他方法 publicvoidconnect(InetAddressaddress,intport):与指定的机器通信 publicvoiddisconnect():关闭与指定机器的连接 publicvoidclose():关闭SocketSingleUDPClient.java发送端发出数据报的标准步骤: 1.定义数据成员 DatagramSocketsocket; DatagramPacketpacket; InetAddressaddress;(用来存放接收方的地址) intport;(用来存放接收方的端口号) 2.创建数据报Socket对象 try{ socket=newDatagramSocket(4445); }catch(java.net.SocketExceptione){} socket绑定到一个本地的可用端口,等待接收客户的请求。3.分配并填写数据缓冲区(一个字节类型的数组) byte[]buf=newbyte[256]; 存放从客户端接收的请求信息。 4.创建一个DatagramPacket packet=newDatagramPacket(buf,256); 用来从socket接收数据,它只需要两个参数。 5.服务器阻塞 socket.receive(packet); 在客户的请求数据报到来之前一直等待。6.从到来的包中得到地址和端口号 InetAddressaddress=packet.getAddress(); intport=packet.getPort(); 7.将数据送入缓冲区 或来自文件、或键盘输入 8.建立报文包,用来从socket上发送信息 packet=newDatagramPacket(buf,buf.length,address,port); 9.发送数据包 socket.send(packet); 10.关闭socket socket.close();接收端接收数据报的标准步骤: 1.定义数据成员 intport; InetAddressaddress; Datagram