教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 公文资料 >

c#网络应用编程第06章 UDP应用编程

来源:网络收集 时间:2026-09-12
导读: c#网络应用编程第06章 UDP应用编程 1 第6章 UDP应用编程6.1 UDP基础知识 6.2 UDP应用编程技术6.3 利用UDP协议进行广播和组播 c#网络应用编程第06章 UDP应用编程 2 本章重点 本章教学目的 学习UDP基础知识 ,利用UdpClient类完成单播、组播和广播。 本章教学

c#网络应用编程第06章 UDP应用编程

1

第6章 UDP应用编程6.1 UDP基础知识

6.2 UDP应用编程技术6.3 利用UDP协议进行广播和组播

c#网络应用编程第06章 UDP应用编程

2

本章重点 本章教学目的

学习UDP基础知识 ,利用UdpClient类完成单播、组播和广播。 本章教学要求 (1)掌握UDP协议同TCP协议相比的优缺点。

(2)掌握组播和广播的概念(3)掌握UdpClient实现单播发送数据和接收数据的方法。 (4)掌握UdpClient类实现组播及广播通信的方法。

教学难点和重点 UDP协议同TCP协议相比的优缺点,利用UdpClient类完成单播、组播和广 播。

c#网络应用编程第06章 UDP应用编程

3

6.1

UDP与TCP的区别

UDP(User Datagram Protocol,用户数据报协议) 是一个简单的、面向数据报的无连接协议,提供 了快速但不一定可靠的传输服务。 UDP与TCP相比主要有以下区别。1.UDP速度比TCP快 2.UDP有消息边界

3.UDP可以一对多传输4.UDP可靠性不如TCP 5.UDP不像TCP那样能保证有序传输

c#网络应用编程第06章 UDP应用编程

4

6.1

UDP与TCP的区别(续)

UDP速度比TCP快

由于UDP不需要先与对方建立连接,也不需要传输确认, 因此其数据传输速度比TCP快得多。 UDP有消息边界

使用UDP不需要考虑消息边界问题,使用上比TCP简单 UDP可以一对多传输 利用UDP可以使用广播或组播的方式同时向子网上的所 有客户发送信息。这一点也比TCP方便。

c#网络应用编程第06章 UDP应用编程

5

6.1

UDP与TCP的区别(续)

UDP可靠性不如TCP

与TCP不同,UDP并不提供数据传送的保证机制。如果 在从发送方到接收方的传递过程中出现数据报的丢失,协 议本身并不能做出任何检测或提示。因此,通常人们把UDP 称为不可靠的传输协议。 UDP不像TCP那样能保证有序传输 UDP不能确保数据的发送和接收顺序。对于突发性的数 据报,有可能会乱序。事实上,UDP的这种乱序性基本上很 少出现,通常只会在网络非常拥挤的情况下才有可能发生。

c#网络应用编程第06章 UDP应用编程

6

6.1

UDP与TCP的区别(续)UDP TCP面向连接 需要建立连接,速度较慢 仅能一对一

连接 速度 目的主机

无连接 无需建立连接,速度 较快 一对一,一对多

带宽

UDP报头较短,消耗 带宽更少有 低 无序

消耗更多的带宽

消息边界 可靠性 顺序

无 高 有序

c#网络应用编程第06章 UDP应用编程

7

6.2

UDP应用编程技术

6.2.1 6.2.2

UdpClient类 同步发送和接收数据

6.2.3

异步发送和接收数据

c#网络应用编程第06章 UDP应用编程

8

6.2.1 UdpClient类 UdpClient类提供了发送和接收无连接的UDP数据报的方便的方法。封装了底层的套接字,并分别提供了对套接字进一步 封装后的同步和异步操作的方法,降低了UDP应用编程的难 度。 与TCP协议有TcpListener类和TcpClient类不同,UDP协议只 有UdpClient类,这是因为UDP协议是无连接的协议,所以只

需要一种Socket。

c#网络应用编程第06章 UDP应用编程

9

6.2.1 UdpClient类(续) 位于http://www.77cn.com.cn.Sockets命名空间下

构造函数有四种

重载形式。编写客户端程序时,常用形式 为: UdpClient UdpClient=new UdpClient(“http://www.77cn.com.cn”, 51888) 它相当于: UdpClient udpClient=new UdpClient(); udpClient.Connect("http://www.77cn.com.cn", 51888); 思考:UDP的Connect和TCP的Connect有什么不同?

c#网络应用编程第06章 UDP应用编程

10

6.2.1 UdpClient类(续)(1)public UdpClient(int port)

自动分配合适的本地IPv4地址,并将基础socket与指定的 本地端口号绑定。例如:UdpClient udpClient = new UdpClient(51666);

如果仅仅是为了发送数据报,而且接收方又能接收任何远 程端口发送给它的数据报,在这种情况下,可以将本地端 口号指定为0,表示让系统自动为其分配一个合适的端口号。 由于这种形式不需要我们考虑指定的端口号是否会产生冲 突,因此这是创建UdpClient对象最方便的方式。

c#网络应用编程第06章 UDP应用编程

11

6.2.1 UdpClient类(续)(2)public UdpClient(IPEndPoint localEp)

与包含本地IP地址和端口号的IPEndPoint实例绑定。 例如: IPAddress address = Dns.GetHostAddresses(Dns.GetHostN ame())[0]; IPEndPoint iep = new IPEndPoint(address, 51666); UdpClient udpClient =new UdpClient(iep);

注意:如果创建的UdpClient对象主要用于接收远程主机向本 机指定端口发送来的数据报,使用这种方式比较合适。这是 因为端口号是固定的,只要远程主机知道本机的域名或IP地 址,它就可以直接向本机的指定端口发送数据报。

c#网络应用编程第06章 UDP应用编程

12

6.2.1 UdpClient类(续)(3)public UdpClient(string hostname, int port)

自动分配合适的本地IP地址和端口号,用于收发数据,并 使用hostname和port参数建立默认远程主机。例如:UdpClient udpClient = new UdpClient("http://www.77cn.com.cn", 11000);

适用于向默认远程主机发数据,或者只接收默认远程主机 发来的数据,而其他主机发送来的数据报自动丢弃的场合。 使用这种构造函数,调用UdpClient对象的Send方法发送数 据报时,不能在Send参数中再指定远程主机,否则会引发 异常。当需要改变发送目标时,可以调用Connect方法重新 建立新的默认远程主机。

c#网络应用编程第06章 UDP应用编程

13

6.2.1 UdpClient类(续)(4)public UdpClient() 自动分配合适的本地IPv4地址和端口号,但是该构造函数不 执行套接字绑定。如果使用这种构造函数,在发送数据报之 前,必须先调用Connect方法,且只能将数据报发送到Connec t方法建立的远程主机。例如:UdpClient udpClient = new UdpClient(); //指定默认远程主机和端口号 udpClient.Connect("http://www.77cn.com.cn", 51666); Byte[] sendBytes = Encoding.Unicode.GetBytes("你好!"); //发送给默认远程主机 udpClient.Send(sendBytes, sendBytes.Length);

注意:由于这种构造函数不执行套接字绑定,因此如果希望 加入多路广播组,不要使用这种构造函数。

c#网络应用编程第06章 UDP应用编程

14

6.2.1 UdpClient类(续) UdpClient类的常用方法和属

性Connect方法 建立默认远程主机。因为UDP是无连接的, 所以不会阻止调用该方法的线程。另外,如 果打算接收多路广播数据报,不要调用 Connect方法,否则从指定的默认地址以外 的地址到达的任何数据报都将被丢弃。但是, 如果在调用Send方法时指定了 IPAddress.Broadcast,则可以将数据广播 到默认的广播地址255.255.255.255 发送数据报

Send方法

Receive方法 接收数据报 BeginSend方法 开始从连接的socket中异步发送数据报 BeginReceive方法 开始从连接的socket中异步接收数据报

c#网络应用编程第06章 UDP应用编程

15

6.2 …… 此处隐藏:2530字,全部文档内容请下载后查看。喜欢就下载吧 ……

c#网络应用编程第06章 UDP应用编程.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/711118.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)