欢迎来到天天文库
浏览记录
ID:33855051
大小:406.73 KB
页数:52页
时间:2019-03-01
《win高级编程06udp应用编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1第第66章章UDPUDP应用编程应用编程6.1UDP基础知识6.2UDP应用编程技术6.3利用UDP协议进行广播和组播2本章重点本章重点�本章教学目的学习UDP基础知识,利用UdpClient类完成单播、组播和广播。�本章教学要求(1)掌握UDP协议同TCP协议相比的优缺点。(2)掌握组播和广播的概念(3)掌握UdpClient实现单播发送数据和接收数据的方法。(4)掌握UdpClient类实现组播及广播通信的方法。�教学难点和重点UDP协议同TCP协议相比的优缺点,利用UdpClient类完成单播、组播和广播。36.1UDP6.1UDP与与TCPTCP的区别的区别�UDP(
2、UserDatagramProtocol,用户数据报协议)是一个简单的、面向数据报的无连接协议,提供了快速但不一定可靠的传输服务。�UDP与TCP相比主要有以下区别:1.UDP速度比TCP快2.UDP有消息边界3.UDP可以一对多传输4.UDP可靠性不如TCP5.UDP不像TCP那样能保证有序传输46.1UDP6.1UDP与与TCPTCP的区别的区别((续)续)�UDP速度比TCP快由于UDP不需要先与对方建立连接,也不需要传输确认,因此其数据传输速度比TCP快得多。�UDP有消息边界使用UDP不需要考虑消息边界问题,使用上比TCP简单�UDP可以一对多传输利用UDP可以使用广
3、播或组播的方式同时向子网上的所有客户发送信息。这一点也比TCP方便。56.1UDP6.1UDP与与TCPTCP的区别的区别((续)续)�UDP可靠性不如TCP与TCP不同,UDP并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP称为不可靠的传输协议。�UDP不像TCP那样能保证有序传输UDP不能确保数据的发送和接收顺序。对于突发性的数据报,有可能会乱序。事实上,UDP的这种乱序性基本上很少出现,通常只会在网络非常拥挤的情况下才有可能发生。66.1UDP6.1UDP与与TCPTCP的区别的区别(
4、(续)续)UDPTCP连接无连接面向连接速度无需建立连接,需要建立连接,速度较慢速度较快目的主机一对一,一对多仅能一对一带宽UDP报头较短,消耗更多的带宽消耗带宽更少消息边界有无可靠性低高顺序无序有序76.2UDP6.2UDP应用编程技术应用编程技术6.2.1UdpClient类6.2.2同步发送和接收数据6.2.3异步发送和接收数据86.2.16.2.1UdpClientUdpClient类类�UdpClient类提供了发送和接收无连接的UDP数据报的方便的方法。封装了底层的套接字,并分别提供了对套接字进一步封装后的同步和异步操作的方法,降低了UDP应用编程的难度。�与TCP
5、协议有TcpListener类和TcpClient类不同,UDP协议只有UdpClient类,这是因为UDP协议是无连接的协议,所以只需要一种Socket。96.2.16.2.1UdpClientUdpClient类(续)类(续)�位于System.Net.Sockets命名空间下�构造函数有四种重载形式。编写客户端程序时,常用形式为:UdpClientUdpClient=newUdpClient(“www.abcd.com”,51888)它相当于:UdpClientudpClient=newUdpClient();udpClient.Connect("www.abcd.com
6、",51888);�思考:UDP的Connect和TCP的Connect有什么不同?106.2.16.2.1UdpClientUdpClient类(续)类(续)(1)publicUdpClient(intport)�自动分配合适的本地IPv4地址,并将基础socket与指定的本地端口号绑定。例如:UdpClientudpClient=newUdpClient(51666);�如果仅仅是为了发送数据报,而且接收方又能接收任何远程端口发送给它的数据报,在这种情况下,可以将本地端口号指定为0,表示让系统自动为其分配一个合适的端口号。由于这种形式不需要我们考虑指定的端口号是否会产生冲突
7、,因此这是创建UdpClient对象最方便的方式。116.2.16.2.1UdpClientUdpClient类(续)类(续)(2)publicUdpClient(IPEndPointlocalEp)�与包含本地IP地址和端口号的IPEndPoint实例绑定。�例如:IPAddressaddress=Dns.GetHostAddresses(Dns.GetHostName())[0];IPEndPointiep=newIPEndPoint(address,51666);UdpClientud
此文档下载收益归作者所有