版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5.1 UDP编程基础 5.2 UDP示例编程,第五章 UDP编程,5.1 UDP编程基础,UDP(User Datagram Protocol)是一种简单的、面向数据报的无连接协议,提供快速但不一定可靠的传输服务。 其主要特点: 不需要连接,速度比TCP快; 既支持一对一,又支持一对多连接(广播); UDP报头比TCP报头小,消耗带宽少; UDP传输的数据有消息边界。,5.1.1 UDP的特点,5.1.1 UDP的特点,5.1 UDP编程基础,UDP对应用层交下来的报文(消息),既不合并,也不拆分,而是保留这些报文的边界。即应用层交给UDP多长的报文,UDP就照样发送,一次发送一个报文。,U
2、DP:面向消息的协议,5.1.2 UDPClient类,1) UdpClient() /自动分配合适的IP地址和端口号 2) UdpClient(int port) /指定端口 3) UdpClient(IPEndPoint) /指定本地IPEndPoint 4) UdpClient(String,Int32) /指定远程主机名,端口号,创建实例-构造函数的4种形式:,5.1 UDP编程基础,注意:UDP的端口与TCP的端口是分开的、独立的。,5.1 UDP编程基础,常用方法列表,5.1.2 UDPClient类,5.1 UDP编程基础,主要属性列表,5.1.2 UDPClient类,5.1.
3、2 UDPClient类,发送数据 -Send方法的3种形式:,1) Send(byte , int , IPEndPoint) /指定远程EndPoint 2) Send(byte , int,string remoteHostName, int port) /指定远程主机的名称和端口 3) Send(byte , int) /默认远程主机,5.1 UDP编程基础,发送数据 -Send方法代码示例:,5.1.2 UDPClient类,UdpClient udpClient=new UdpClient(); IPAddress remoteIP=IPAddress.Parse(“127.0.0
4、.1”) ; IPEndPoint iep=new IPEndPoint(remoteIP,51666); byte sendBytes=System.Text.Encoding.Unicode.GetBytes(“发送信息”); udpClient.Send(sendBytes,sendBytes.Length,iep);,5.1 UDP编程基础,接收数据-Receive方法:,5.1.2 UDPClient类,IPEndPoint localIEP=new IPEndPoint(IPAddress.Any,51666); UdpClient udpClient=new UdpClient(
5、localIEP); IPEndPoint iep=new IPEndPoint(IPAddress.Any,0); byte receiveBytes=udpClient.Receive(ref iep); string receStr=System.Text.Encoding.Unicode.GetString(receBytes);,5.1 UDP编程基础,接收数据报,返回主机信息,5.1 UDP编程基础,5.1.2 UDPClient类,Receive方法说明(1): 如果接收缓冲区无数据,Receive方法将阻塞直到有数据到达为止; 如果数据可用,将读取接收缓冲区的第一个数据报(返回
6、数据及远程主机信息); 如果在Connect中指定了默认的主机,则只接收来自该主机的数据报,其余所有数据报将被丢弃;如果需要接收多播数据报,则不能指定连接信息。,5.1.2 UDPClient类,5.1 UDP编程基础,Receive方法说明(2): 当本机接收的数据报容量超过分配给它的缓冲区大小时,该方法能够自动调整缓冲区大小。而使用Socket对象遇到这种情况时,将会产生SocketException异常。因此,使用UdpClient的方法轻而易举地解决了大量程序设计上的麻烦,提高了编程效率。,5.2 UDP示例编程,UDP编程可实现功能: 单点(1:1)编程; UDP广播编程; UDP组
7、播编程;,5.2.1 UDP编程,5.2 UDP示例编程,5.2.2 UDP单点编程,UdpClient udpClient=new UdpClient(); IPAddress remoteIP=IPAddress.Parse(“127.0.0.1”) IPEndPoint iep=new IPEndPoint(remoteIP,51666); /指定单个IP byte sendBytes=System.Text.Encoding.Unicode.GetBytes(“发送信息”); udpClient.Send(sendBytes,sendBytes.Length,iep);,5.2.3 U
8、DP广播-1,5.2 UDP示例编程,所谓广播,是指同时向子网中的多台计算机发送消息,并且所有子网中的计算机都可以接收发送方发来的消息。每个广播消息包含一个特殊的地址。广播地址分为两种: 本地广播,子网中的计算机 全球广播,所有计算机(255.255.255.255),5.2.3 UDP广播-2,5.2 UDP示例编程,本地广播如何确定广播地址?,方法一:特别指定 IP地址: 192.168.100.2 子网掩码:255.255.255.0 广播地址:192.168.100.255,方法二:自动指定 IPAdress.Broadcast,5.2.3 UDP广播-3,UdpClient udpC
9、lient=new UdpClient(); IPEndPoint iep=new IPEndPoint(IPAddress.Broadcast,8001); udpClient.EnableBroadcast=true; /从字符串转为字节,str表示要发送的字符串 bytes bytes=System.Text.Encoding.UTF8.GetBytes(str); udpClient.Send(bytes,bytes.Length,iep);,广播示例:,5.2 UDP示例编程,5.2.3 UDP广播-3,5.2 UDP示例编程,子网广播的优点: 简单快捷,子网广播的缺点: 没有目的性
10、,增加网络负担,5.2.3 UDP多播,5.2 UDP示例编程,所谓多播,又称多路广播或组播,是一种允许一个或多个发送者(多播源)将单一的数据包同时发送到多个接收者的网络技术。是将消息从一个计算机发送到本网内或全网内已加入指定组的计算机上。,多播网是开放的,每台计算机都可以通过程序随时加入或离开多播组。组可以是永久的,也可以是临时的。,5.2 UDP示例编程,多播工作示意图,组播地址:D类地址,用于标志多播组,5.2 UDP示例编程,5.2.3 UDP组播,5.2 UDP示例编程,UdpClient的Ttl属性:允许路由器转发的最大数目。默认值为1,表示只能在子网内发送。 UdpClient的JoinMulticastGroup方法,加入组播组。,UdpClient udpClient=new UdpClient(); udpClient.JoinMulticastGroup(IPAddress.Parse(“224.0.0.1”); udpClient.Ttl=50; IPEndPoint remote=null; bytes bytes=udpClient.Receive(ref
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年3年级阅读测试题答案
- 2026年08五年种植试卷及答案
- 2026年15周年答题题库及答案
- 2026年1职业能力测试题及答案
- 2026年7年级语文单元测试卷及答案
- 2026年4级英语试题答案
- 一年级科学下册湘科版2.1认识水 课件
- 异位妊娠患者疼痛管理方法
- 建筑施工项目安全防护设施检查验收流程指南
- 职业声誉保障承诺函4篇
- 精神科抑郁症患者出院准备服务专家共识解读
- 中医揉腹课件
- 水库维修养护实施方案
- 北京2024年高考真题化学试题(含答案)
- 中医养生心血管养生
- 设备购置论证报告讲解
- 树木移植施工方案与技术措施
- 文学经典中的女性主义解读-洞察分析
- 电商运营知识培训课件
- 儿童游乐场安全监管制度
- 人音版小学六年级下册音乐全册教案(教学设计)
评论
0/150
提交评论