欢迎来到天天文库
浏览记录
ID:1972656
大小:202.50 KB
页数:18页
时间:2017-11-14
《实验07 udp socket》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验七UDPSocket一.本实验目的及要求:1.掌握在TCP/IP体系结构中UDP协议概念和应用领域;学习UDP协议内容,了解单播、广播和组播的概念,掌握什么是D类IP地址及分类;2.掌握在JAVA程序设计中与UDP通信相关的类DatagramSocket和DatagramPacket;3.掌握在JAVA程序设计中利用UDP进行组播的类MulticastSocket。4.完成以下各内容程序,截存运行结果图,并提交实验报告。二.基础知识1.UDP概念UDP(UserDatagramProtocol)用户数据报协议(RFC768)是OSI参考模型中一种无连接的传输层协议,提供面向事
2、务的简单不可靠信息传送服务。UDP协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。在实际的Internet应用中,UDP占据了半壁江山。UDP常用应用和相关设置端口,如表4-1所示。表4-1UDP常用应用和相关设置端口2.UDP套接字类在JAVA语言中,一个UDPSocket用于处理数据包的发送或接收业务。每一个数据包独立的选择路由进行发送和接收。在两台计算机之间的多个数据包发送会选择不同的路径,并且到达顺序也不同于发送顺序。在JAVA语言中,DatagramSocket类被用于发送和接收UDP数据包,定义如图4-2所示。例如:Dat
3、agramSockets=newDatagramSocket(null);s.bind(newInetSocketAddress(8888));该语句相当于:DatagramSockets=newDatagramSocket(8888);这两种情况都在本地创建一个DatagramSocket接收UDP端口8888的数据。其构造方法:DatagramSocket()在本地端口创建创建一个数据包套接字。 DatagramSocket(int port)在本地指定端口创建创建一个数据包套接字。 DatagramSocket(int port,InetAddress laddr)在本地指
4、定的IP地址和端口创建创建一个数据包套接字。lDatagramPacket该类用于存储数据包,UDP数据包用于实现无连接的数据提交服务。每个信息利用自己包中的信息独立完成在计算机之间的传递。在2台计算机之间传递的多个数据包可能选择不同的路由,并且到达顺序不同于发送顺序。数据包的提交是不可靠的。DatagramPacket(byte[] buf,int length)建立一个指定缓冲长度的数据包;DatagramPacket(byte[] buf,int length,InetAddress address,int port)在指定的IP地址和端口上,建立一个指定缓冲长度的数据包。
5、3.组播组播(Multicast)传输:在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。它提高了数据传送效率。减少了骨干网络出现拥塞的可能性。IP多播通信必须依赖于IP多播地址,在IPv4中它是一个D类IP地址,范围从224.0.0.0到239.255.255.255,并被划分为局部链接多播地址、预留多播地址和管理权限多播地址三类。l局部链接多播地址范围在224.0.0.0~224.0.0.255,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;l预留多播地址为224.0.1.0~23
6、8.255.255.255,可用于全球范围(如Internet)或网络协议;l管理权限多播地址为239.0.0.0~239.255.255.255,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。多播套接字类MulticastSocket这个类用于发送和接收IP多播数据包。该MulticastSocket是一个UDPDatagramSocket,增加了在internet上加入其它多播主机“组”的功能。UDP广播发送建立在DatagramSocket基础上。用于接收广播数据必须绑定在统配的地址上。一个多播组是建立在一个D类IP地址上和一个UDP端口上
7、。D类IP地址的范围是224.0.0.0----239.255.255.255,注意地址224.0.0.0是保留地址不能使用。在某些实现中,广播数据包可以绑定在多个指定的地址上。一个终端需要加入一个组播组需要在指定的端口上建立一个MulticastSocket//加入组播组,并在组内发送问候...Stringmsg="Hello";InetAddressgroup=InetAddress.getByName("228.5.6.7");MulticastSockets=newMul
此文档下载收益归作者所有