




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 UDP应用编程,4.1 UDP基础知识 4.2 UDP应用编程技术 4.3 利用UDP协议进行广播和组播,4.1 UDP基础知识,UDP(User Datagram Protocol)全称是用户数据报协议。是一个简单的、面向数据报的无连接协议,提供了快速但不一定可靠的传输服务。 与TCP相比,UDP有如下一些特点: 优点 (1)UDP基于无连接的协议,速度比TCP更快。对于强调传输性能而不是传输完整性的应用(例如音频和多媒体应用),UDP是最好的选择; (2)UDP不但支持一对一连接,而且也支持一对多连接,可以使用广播的方式多地址发送,而TCP仅支持一对一的通信; (3)UDP与TCP的报头比是8:20,这使得UDP消耗的网络带宽更少 (4)UDP传输的数据有消息边界,而TCP没有消息边界。,4.1 UDP基础知识,缺点 (1) UDP缺乏双方的握手信号,因此发送方无法了解数据报是否已经到达目标主机。如果在从发送方到接收方的传递过程中出现了数据包丢失,协议本身并不能做出任何检测或提示,因此可靠性不如TCP。 (2) UDP没有任何对双方会话的支持,当接收多个数据报时,不能保证各数据包到达的顺序与发出的顺序相同。当然,UDP的这种乱序性基本上很少出现,通常只会在网络非常拥挤的情况下才可能发生。 UDP与TCP的共同点 都是构建于底层IP之上的传输层协议,4.1 UDP基础知识,4.2 UDP应用编程技术,4.2.1 UdpClient类 4.2.2 发送和接收数据的方法,4.2.1 UdpClient类,UdpClient类提供了发送和接收无连接的UDP数据报的方便的方法。封装了底层的套接字,并分别提供了对套接字进一步封装后的同步和异步操作的方法,降低了UDP应用编程的难度。 与TCP协议有TcpListener类和TcpClient类不同,UDP协议只有UdpClient类,这是因为UDP协议是无连接的协议,所以只需要一种Socket。,4.2.1 UdpClient类(续),位于System.Net.Sockets命名空间下 构造函数有四种重载形式(见教材P94)。编写客户端程序时,常用形式为: UdpClient UdpClient=new UdpClient(“”, 51888) 它相当于: UdpClient udpClient=new UdpClient(); udpClient.Connect(““, 51888); 思考:UDP的Connect和TCP的Connect有什么不同?,4.2.1 UdpClient类(续),UdpClient类的常用方法,4.2.1 UdpClient类(续),UdpClient类的常用属性,4.2.2 发送和接收数据的方法,编写基于UDP的应用程序时,关键在于如何实现数据的发送和接收。由于UDP不需要建立连接,因此可以在任何时候直接向网络中的任意主机发送UDP数据。在同步阻塞方式下,可以使用UdpClient对象的Send方法和Receive方法。 Send:可直接将数据发送到远程主机,并返回发送数据的长度,Send方法发送数据的类型为byte数组。 Receive:能够在指定的本地IP地址和端口上接收数据,该方法带一个引用类型的IPEndPoint实例,并将接收到的数据作为byte数组返回。,4.2.2 发送和接收数据的方法(续),udpClient.Send (Byte, Int32) 将UDP数据报发送到远程主机。 Byte:指定发送的数据 Int32:发送数据的数据长度 说明: 这种重载形式假定UDP客户端已经通过Connect方法指定了默认的远程主机,或者在实例化UdpClient时已经指定了远程服务器的IP和端口,4.2.2 发送和接收数据的方法(续),UdpClient.Send (Byte, Int32, IPEndPoint) 将 UDP数据报发送到位于指定远程终结点的主机. Byte:待发送到远程主机的数据 Int32: 待发送到远程主机的数据长度 IPEndPoint :远程主机端点,包含了应用程序连接到主机上的服务所需的IP地址和端口信息。 说明:这种重载形式在参数中指定了远程主机的端点,在调用该方法前不需要指定远程主机的信息,如(不需要通过Connect方法指定远程主机端点,不需要在实例化UdpClient时指定远程服务器的IP和端口),4.2.2 发送和接收数据的方法(续),UdpClient.Send(Byte,Int32, String, Int32)将UDP数据报发送到指定的远程主机上的指定端口。 Byte:待发送到远程主机的数据 Int32:待发送到远程主机的数据长度 String:远程主机名 Int32: 端口 说明:这种重载形式在参数中指定了远程主机的端点,在调用该方法前不需要指定远程主机的信息,如(不需要通过Connect方法指定远程主机端点,不需要在实例化UdpClient时指定远程服务器的IP和端口),4.2.2 发送和接收数据的方法(续),UdpClient myUdpClient = new UdpClient(); try IPEndPoint iep = new IPEndPoint(remoteIp, port); byte bytes = System.Text.Encoding.Unicode.GetBytes(textBox1.Text); myUdpClient.Send(bytes, bytes.Length, iep); catch (Exception err) MessageBox.Show(err.Message, “发送失败“); ,发送方法示例,4.2.2 发送和接收数据的方法(续),接收方法示例(书上有错): UdpClient udpClient = new UdpClient(51666); IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); Try Byte receiveBytes = udpClient.Receive(ref remoteIpEndPoint); string receiveData = System.Text.Encoding.Unicode.GetString(receiveBytes); Console.WriteLine(“接收到信息:“+receiveData); catch(Exception e ) MessageBox.Show (e.ToString(); ,4.2.3 UDP网络聊天程序(续),设计界面,4.2.3 UDP网络聊天程序(续),运行效果,4.3 利用UDP进行广播和组播,4.2.1 通过Internet实现群发功能 4.3.2 在Internet上举行网络会议,4.3.1 通过Internet实现群发功能,TCP通信采用一对一的通信模式。日常生活中的网络会议通知、广告、网络信息公告等功能,需要采用UDP实现一对多的群发功能。 通过Internet实现群发功能的形式有两种: (1)利用广播向子网中的所有客户发送消息,比如各类通知、单位公告、集体活动日程安排等; (2)利用组播向Internet网上不同的子网发送消息,比如集团向其所属的公司或用户子网发布信息公告等。,4.3.1 通过Internet实现群发功能,广播:就是指同时向子网中的多台计算机发送消息,并且所有子网中的计算机都可以接收到发送方发来的消息。每个广播消息包含一个特殊的IP地址,这个特殊地址的特点是子网内主机标示部分的二进制表示均为1。 广播消息地址分为两种类型: 本地广播:本地广播是指向子网中的所有计算机发送广播消息,其他网络不会受到本地广播的影响。 IP地址分为两部分,网络标示部分(指定向哪个子网发送)和主机标示部分(全为1表示向该子网内的所有用户发送消息。),这两部分是靠子网掩码来区分的,我们把主机标示部分二进制表示全部为1的地址称为本地广播地址。 全球广播: 全球广播使用四个字节所有位全为1的IP地址,即点分十进制的55,这个特定的广播地址表明数据报的目的地是网络上的所有设备。但是由于路由器会自动过滤掉全球广播,所以使用这个地址没有实际意义。,利用广播实现群发,例1:对于B类网络,使用子网掩码。本地广播地址应为:,利用广播实现群发,4.3.1 通过Internet实现群发功能,答:本地广播地址是55.,例2:对于B类网络,使用子网掩码。本地广播地址应为:,答:本地广播地址是55.,4.3.1 通过Internet实现群发功能,UdpClient myUdpClient = new UdpClient(); try /让其自动提供子网中的IP广播地址 IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 8001); /允许发送和接收广播数据报 myUdpClient.EnableBroadcast = true; /将发送内容转换为字节数组 byte bytes = System.Text.Encoding.UTF8.GetBytes(textBox1.Text); /向子网发送信息 myUdpClient.Send(bytes, bytes.Length, iep); catch (Exception err) MessageBox.Show(err.Message, “发送失败“); finally myUdpClient.Close(); ,广播发送数据方法,4.3.1 通过Internet实现群发功能,利用广播技术向子网发送广播信息,同时接收子网中的任意主机发送的广播信息。设计界面(具体代码见教材P99的源程序),4.3.1 通过Internet实现群发功能,利用组播实现群发功能 1、广播的通信模式虽然能够实现一对多的通信需要,但是,由于广播是向子网中的所有计算机用户发送消息,没有目的性,不但增加了网络传输负担,而且资源消耗较高。 2、组播也叫多路广播。所谓组播是将消息从一台计算机发送到本网或全网内选择的计算机子集上,即发送到那些加入指定组播组的计算机上。,4.3.1 通过Internet实现群发功能,组播组:是分享一个组播地址的一组设备。任何发送到组播地址的消息都会被发送到组内的所有成员设备上。组可以是永久的,也可以是临时的。大多数组播组是临时的,仅在有成员的时候才存在。 组播地址:组播地址是范围在到55的D类IP地址。 IP组播使用特殊的IP地址范围来表示不同的组播组。 用户创建一个新的组播组时只需从地址范围内选出一个地址,然后为这个地址构造一个对象,就可以开始发送消息了。,4.3.1 通过Internet实现群发功能,加入组播组 在UdpClient类中,使用JoinMulticastGroup方法将UdpClient对象和TTL一起加入组播组,使用DropMulticastGroup退出组播组。例如: /创建UdpClient的实例并设置使用的本地端口号 UdpClient udpClient=new UdpClient(8001); udpClient.JoinMulticastGroup(IPAddress.Parse(““); 或者: UdpClient udpClient=new UdpClient(8001); udpClient.JoinMulticastGroup(IPAddress.Parse(““), 50); 其中50为TTL值。,4.3.1 通过Internet实现群发功能,使用组播时,应注意的是TTL(Time To Live,生存周期)值的设置。TTL值是允许路由器转发的最大数目,当达到这个最大值时,数据包就会被丢弃。如果使用默认值(默认值为1),则只能在子网中发送。可以通过UdpClient对象的Ttl属性直接设置TTL值,例如: UdpClient myUdpClient = new UdpClient(); myUdpClient. TTL = 50; 该语句设置TTL值为50,即最多允许50次路由器转发。,4.3.1 通过Internet实现群发功能,组播发送数据方法示例,4.3.1 通过Internet实现群发功能,组播和广播的区别: (1)本地广播无法通过路由器,广播只是限于本网段内,遇到路由器则止。同网段内其他在指定端口侦听的程序都能收到该包都需要一个数据copy。组播没有这个限制,只要加入组就能收到数据包。 (2)由于广播是向某个子网中的所有计算机用户发送消息,没有目的性,会增加网络传输负担,而且资源消耗较高。组播将消息发送到加入指定组播组的计算机中,组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环保知识竞赛题库附答案
- 血液透析考试题及答案(水处理)
- 汽车电子控制技术模考试题与参考答案
- 薪酬体系设计服务费协议
- 2025年公共自行车锁车器设备合作协议书
- 供热咨询知识培训内容课件
- 2025年运输代理服务项目合作计划书
- 药品网络销售考试题(附答案)
- 供暖公司员工知识培训课件
- 吉林省榆树市第一高级中学2026届高二化学第一学期期中学业质量监测模拟试题含解析
- 常压储罐管理制度
- 税务师事务所内部管理制度
- 房屋建筑工程竣工验收技术资料统一用表(2024 版)
- 《企业研发费用税前加计扣除政策解读与应用课件》
- 蓝桥杯-科学素养考试题库(含答案)
- OptiStruct结构分析与工程应用
- HRM4800原料立式磨使用手册
- 辽宁中考英语2022-2024真题汇编-教师版-专题05 阅读还原之五选四等
- 钢构彩瓦施工合同范本
- 广东省深圳市2024-2025学年高一上学期期中考试数学试卷(含答案)
- 第6讲立体几何(2022-2023年高考真题)(原卷版)
评论
0/150
提交评论