欢迎来到天天文库
浏览记录
ID:59423435
大小:247.00 KB
页数:56页
时间:2020-09-19
《chapter8-基于UDP的数据报和套接字ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java网络编程第8章基于UDP的数据报和套接字8.1UDP协议简介8.2DatagramPacket类8.3DatagramSocket类8.4DatagramChannel类8.5组播Socket第8章基于UDP的数据报和套接字UDP(UserDatagramProtocol,用户数据报协议)是传输层的另一种协议,它比TCP具有更快的传输速度,但是不可靠。UDP发送的数据单元称为UDP数据报。当网络传输UDP数据报时,无法保证数据报一定到达目的地,也无法保证各个数据报按发送的顺序到达目的地。当发送方先发送包含字符串“hello”的数据报,再发送包含字符串“ever
2、yone”的数据报,接收方有可能先接收到字符串“everyone”,再接收到字符串“hello”;也有可能什么数据也没有接收到,因为发送方发送的数据有可能在传输途中都丢失了。8.1UDP协议简介在Java中,java.util.DatagramSocket负责接收和发送UDP数据报,java.util.DatagramPacket表示UDP数据报。如图8-1所示,每个DatagramSocket与一个本地地址(包括本地主机的IP地址和本地UDP端口)绑定,每个DatagramSocket可以把UDP数据报发送给任意一个远程DatagramSocket,也可以接收来自任
3、意一个远程DatagramSocket的UDP数据报。在UDP数据报中包含了目的地址的信息,DatagramSocket根据该信息把数据报发送到目的地。8.1UDP协议简介UDP协议是无连接的协议,客户端的DatagramSocket与服务器端的DatagramSocket不存在一一对应关系,两者无需建立连接,就能交换数据报。DatagramSocket提供了接收和发送数据报的方法:publicvoidreceive(DatagramPacketdst)throwsIOException//接收数据报publicvoidsend(DatagramPacketsrc)t
4、hrowsIOException//发送数据报8.1UDP协议简介例程EchoServer与例程EchoClient就利用DatagramSocket来发送和接收数据报。同一时刻,可能会有多个EchoClient进程与EchoServer进程通信。EchoServer的DatagramSocket与UDP端口8000绑定,EchoClient则与任意一个可用的UDP端口绑定。EchoServer在一个while循环中不断接收EchoClient的数据报,然后给EchoClient回复一个数据报。EchoClient从控制台读取用户输入的字符串,把它包装成一个数据报,再
5、把它发送给EchoServer,接着再接收EchoServer的响应数据报。8.2DatagramPacket类DatagramPacket表示数据报,它的构造方法可以分为两类:一类构造方法创建的DatagramPacket对象用来接收数据还有一类构造方法创建的DatagramPacket对象用来发送数据。两类构造方法的主要区别是,用于发送数据的构造方法需要设定数据报到达的目的地址,而用于接收数据的构造方法无需设定地址。8.2DatagramPacket类用于接收数据的构造方法包括:publicDatagramPacket(byte[]data,intlength)p
6、ublicDatagramPacket(byte[]data,intoffset,intlength)以上data参数用来存放接收到的数据,参数length指定要接收的字节数,参数offset指定在data中存放数据的起始位置,即data[offset]。如果没有设定参数offset,那么起始位置为data[0]。8.2DatagramPacket类用于发送数据的构造方法包括:publicDatagramPacket(byte[]data,intoffset,intlength,InetAddressaddress,intport)publicDatagramPack
7、et(byte[]data,intoffset,intlength,SocketAddressaddress)publicDatagramPacket(byte[]data,intlength,InetAddressaddress,intport)publicDatagramPacket(byte[]data,intlength,SocketAddressaddress)以上data参数中存放了要发送的数据,参数length指定要发送的字节数,参数offset指定要发送的数据在data中的起始位置,即data[offset]。如果没有设定参数offs
此文档下载收益归作者所有