第11章UDP协议开发.ppt
《第11章UDP协议开发.ppt》由会员分享,可在线阅读,更多相关《第11章UDP协议开发.ppt(63页珍藏版)》请在沃文网上搜索。
1、1第十一章第十一章 UDP协议开发协议开发 11.1 UDP协议概述协议概述 11.2 UDP协议的套接字编程技术协议的套接字编程技术11.3 使用使用UdpClient简化简化UDP编程编程11.4 使用使用UDP协议进行广播和组播协议进行广播和组播11.5 小结小结211.1 UDP协议概述协议概述11.1.1 UDP协议的特点协议的特点l一个简单的、面向数据报的无连接协议一个简单的、面向数据报的无连接协议l提供了快速但不一定可靠的传输服务提供了快速但不一定可靠的传输服务l构建于底层构建于底层IP协议之上的传输层协议协议之上的传输层协议l不保证数据包一定到达目的,适用于可靠性较高不保证数据
2、包一定到达目的,适用于可靠性较高的局域网的局域网l可以使用广播的方式向子网上所有设备可以使用广播的方式向子网上所有设备 发送消息发送消息l可以使用组播的方式同时向网络上的多个设备发可以使用组播的方式同时向网络上的多个设备发送消息送消息 311.1.2 UDP与与TCP的比较的比较 l速度快:基于无连接的,消除连接的系统延迟速度快:基于无连接的,消除连接的系统延迟l一对多:支持一对多发送,一对多:支持一对多发送,TCP仅支持一对一仅支持一对一l占用网络带宽少:和占用网络带宽少:和TCP的报头比为的报头比为8:20l消息边界:消息边界:UDP有消息边界,有消息边界,TCP无无l可靠性:可靠性:UD
3、P可靠性差,无法保证消息传送到了可靠性差,无法保证消息传送到了目标目标l乱序性:网络非常拥挤时可能会出现乱序性:网络非常拥挤时可能会出现411.2 UDP协议的套接字编程技术协议的套接字编程技术11.2.1 使用使用SendTo和和ReceiveFrom方法方法11.2.2 使用使用Send和和Receive方法方法11.2.3 解决解决UDP数据丢失问题数据丢失问题511.2.1 使用使用SendTo和和ReceiveFrom方法方法1.1.编程思路编程思路 UDP UDP UDP Socket()Bind()ReceiveFrom()SendTo()Close()Socket()Bind(
4、)SendTo()ReceiveFrom()Close()611.2.1 使用使用SendTo和和ReceiveFrom方法方法(续续)2.编程步骤编程步骤1 创建套接字创建套接字 Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);2 如果要接收如果要接收UDP数据包,需要将创建的套接字数据包,需要将创建的套接字与本地与本地IPEndPoint进行绑定;进行绑定;3 使用使用SendTo方法和方法和ReceiveFrom方法发送和接收方法发送和接收数据包数据包711.2.1 使用使用SendTo和和Rece
5、iveFrom方法方法(续续)3.方法简介方法简介1 SendTo方法的几种重载形式方法的几种重载形式lpublic int SendTo(byte data,EndPoint remote)lpublic int SendTo(byte data,SocketFlags flags,EndPoint remote)lpublic int SendTo(byte data,int size,SocketFlags flags,EndPoint remote)lpublic int SendTo(byte data,int offset,int size,SocketFlags flags,En
6、dPoint remote)811.2.1 使用使用SendTo和和ReceiveFrom方法方法(续续)2 ReceiveFrom方法的几种重载形式方法的几种重载形式lpublic int ReceiveFrom(byte data,ref EndPoint remote)lpublic int ReceiveFrom(byte data,SocketFlags flags,ref EndPoint remote)lpublic int ReceiveFrom(byte data,int size,SocketFlags flags,ref EndPoint remote)lpublic i
7、nt ReceiveFrom(byte data,int offset,int size,SocketFlags flags,ref EndPoint remote)911.2.1 使用使用SendTo和和ReceiveFrom方法方法(续续)4.示例分析示例分析public static void Main()int length;byte bytes=new byte1024;Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);IPEndPoint myHost=new
8、 IPEndPoint(IPAddress.Any,6789);socket.Bind(myHost);IPEndPoint remote=new IPEndPoint(IPAddress.Parse(127.0.0.1),6789);EndPoint remoteHost=(EndPoint)remote;1011.2.1 使用使用SendTo和和ReceiveFrom方法方法(续续)Console.Write(输入发送的信息输入发送的信息:);string str=Console.ReadLine();bytes=System.Text.Encoding.Unicode.GetBytes(
9、str);socket.SendTo(bytes,bytes.Length,SocketFlags.None,remoteHost);while(true)Console.WriteLine(等待接收等待接收.);length=socket.ReceiveFrom(bytes,ref remoteHost);str=System.Text.Encoding.Unicode.GetString(bytes,0,length);Console.WriteLine(接收到信息:接收到信息:0,str);if(str=bye)break;1111.2.1 使用使用SendTo和和ReceiveFrom
10、方法方法(续续)Console.Write(输入回送信息(输入回送信息(bye退出退出):):);str=Console.ReadLine();bytes=System.Text.Encoding.Unicode.GetBytes(str);socket.SendTo(bytes,remoteHost);socket.Shutdown(SocketShutdown.Both);socket.Close();Console.WriteLine(对方已经对方已经byebye了,请按回车键结束了,请按回车键结束。);Console.ReadLine();12131411.2.1 使用使用SendTo
11、和和ReceiveFrom方法方法(续续)5.适用范围适用范围 使用使用SendTo和和ReceiveFrom方法传递数据时需方法传递数据时需要在参数中指定远程主机,比较适合向多个远程主要在参数中指定远程主机,比较适合向多个远程主机发送数据。机发送数据。1511.2.1 使用使用SendTo和和ReceiveFrom方法方法(续续)6.示例示例:关于关于receiveFrom中使用中使用 ref的的EndPoint 例例:RefEndPoint1617181911.2.2 使用使用Send和和Receive方法方法1.编程思路编程思路 UDP UDP Socket()Bind()Connect
12、()Receive()Send()Close()Socket()Bind()Connect()Send()Receive()Close()2011.2.2 使用使用Send和和Receive方法方法(续续)说明:说明:1 Bind()方法仅仅用于指明接收数据时本地方法仅仅用于指明接收数据时本地IP和端口号。和端口号。2 Connect()方法用于指明发送数据时接收方方法用于指明发送数据时接收方的的IP和端口号;接收数据的发送方的和端口号;接收数据的发送方的IP和端口和端口号。号。和和TCP中不一样中不一样 3 并没有实际的通信链路存在。并没有实际的通信链路存在。2111.2.2 使用使用Sen
13、d和和Receive方法方法(续续)2.编程步骤编程步骤1 创建套接字创建套接字 Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);2 用用Bind方法将创建的套接字与本地方法将创建的套接字与本地IPEndPoint进行绑定;进行绑定;(用于接收消息用于接收消息)3 用用Connect方法建立与远程主机联系方法建立与远程主机联系(用于确定用于确定远程主机的信息远程主机的信息);4 使用使用Send方法和方法和Receive方法发送和接收数据包方法发送和接收数据包2211.2.2 使用使用Send和和Rece
14、ive方法方法(续续)3.示例分析示例分析public static void Main()int length;byte bytes=new byte1024;Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);IPEndPoint myHost=new IPEndPoint(IPAddress.Any,6789);socket.Bind(myHost);IPEndPoint remote=new IPEndPoint(IPAddress.Parse(127.0.0.1,
15、6789);socket.Connect(remote);Console.Write(输入发送的信息:输入发送的信息:);string str=Console.ReadLine();bytes=System.Text.Encoding.Unicode.GetBytes(str);2311.2.2 使用使用Send和和Receive方法方法(续续)socket.Send(bytes);while(true)Console.WriteLine(等待接收等待接收.);length=socket.Receive(bytes);str=System.Text.Encoding.Unicode.GetSt
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第11章 UDP协议开发 11 UDP 协议 开发
