没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
全面掌握 VisualC#实现 UDP 协议(一)
作者:[本站编辑] 来源:[CSDN] 浏览:[ ]
一.走进 UDP 协议:
UDP(User Datagram Protocol)协议就是“用户数据报协议”,它是一种无连接的协议,无连接主
要是和 TCP 协议相比较的。我们知道当利用 TCP 协议传送数据的时候,首先必须先建立连接(也就
是所谓的握手)才可以传输数据。而当计算机利用 UDP 协议进行数据传输的时候,发送方只需要知
道对方的 IP 地址和端口号就可以发送数据,而并不需要进行连接。当然如果你非要进行连接,通过
Visual C#也是可以实现的,但前提是要确定连接的远程主机的端口号处于监听状态,否则程序会出
现不必要的错误,但这是种画蛇添足的做法,不仅丢失了 UDP 协议的无连接传送数据的特点和优
点,而且还给程序运行带来了不安定的因素。所以这种方法并不值得提倡。
由于 UDP 协议并不需要进行确定的连接,所以编写基于 UDP 协议的应用程序比起编写基于 TCP 协
议的应用程序要简单些(程序中可以不需要考虑连接和一些异常的捕获工作)。但同时也给基于
UDP 协议编写的程序带来了一个致命的缺点,UDP 由于不提供可靠数据的传输,当计算机之间利用
UDP 协议传送数据的时候,发送方只管发送数据,而并不确认数据是否被对方接收。这样就会导致
某些 UDP 协议数据包在传送的过程中丢失,尤其网络质量不令人满意的情况下,丢失数据包的现象
会更严重。这就是为什么在网络上传输重要数据不采用 UDP 协议的原因。
但是我们也不能因为这一个缺点就全面否定 UDP 协议,这是因为虽然利用 UDP 协议来传送安全性要
求高的数据是不适合的,但对于那些不重要的数据,或者即使丢失若干数据包也不影响整体性的数
据,如音频数据,视频数据等,采用 UDP 协议就是一个非常不错的选择。如目前网络流行的很多即
时聊天程序,如 OICQ 和 ICQ 等,采用的就是 UDP 协议。同时虽然 UDP 协议无法保证数据可靠性,
但具有对网络资源开销较小,数据处理速度快的优点,所以在有些对数据安全性要求不是很高的情况
下,采用 UDP 协议也是一个非常不错的选择。
总结一下上面的内容,可见 UDP 是一种不面向连接的网络协议,既有其优点,也有其不足,具体如
下:
1.基于 UDP 协议的网络应用程序,实现起来比较简单,并且基于 UDP 协议的网络应用程序在运行
时,由于受到环境影响较小,所以不容易出错。
2.UDP 协议占用网络资源较少,数据处理较快,所以在网络中传送对安全性要求不是十分高数据
时,其优点比较明显。所谓对安全性要求不高的数据,是指那些不重要的数据,或者是即使丢失若干
数据,也不影响其整体的数据,如音频数据等。目前很多流行的网络应用程序都是基于 UDP 协议
的,如 OICQ、ICQ 等。
3.由于其不是面向连接的网络协议,其缺点也是非常明显的,有些时候甚至是致命的。因为使用
UDP 协议来传送数据,在数据发送后,在发送方并不确认对方是否接收到。这样就可能导致传送的
数据在网络中丢失,尤其在网络条件并不很好的情况下,丢失数据包的现象就更多。所以传送重要数
据一般不采用 UDP 协议。
二.简介 Visual C#发送、接收 UDP 数据包使用的主要类及其用法:
用 Visual C#实现 UDP 协议,最为常用,也是最为关键的类就是 UdpClient,UdpClient 位于命名
空间 System.Net.Sockets 中,Visual C#发送、接收 UDP 数据包都是通过 UdpClient 类的。表
01 和表 02 是 UdpClient 类中常用方法和属性及其简要说明。
方法 说明
Close 关闭 UDP 连接
Connect 建立与远程主机的连接
DropMulticastGroup 退出多路广播组
JoinMulticastGroup 将 UdpClient 添加到多路广播组
Receive 返回已由远程主机发送的 UDP 数据文报
Send 将 UDP 数据文报发送到远程主机
表 01:UdpClient 类中常用方法及其说明。
属性 说明
Active 获取或设置一个值,该值指示是否已建立了与远程主机的连接
Client 获取或设置基础网络套接字
表 02:UdpClient 类中常用方法及其说明。
1.Visual C#使用 UdpClient 类发送 UDP 数据包:
在具体使用中,一般分成二种情况:
(1). 知道远程计算机 IP 地址:
"Send"方法的调用语法如下:
public int Send (
byte[] dgram ,
int bytes ,
IPEndPoint endPoint
) ;
参数说明:
dgram 要发送的 UDP 数据文报(以字节数组表示)。
bytes 数据文报中的字节数。
endPoint 一个 IPEndPoint,它表示要将数据文报发送到的主机和端口。
返回值 已发送的字节数。
下面使用 UdpClient 发送 UDP 数据包的具体的调用例子:
IPAddress HostIP = new IPAddress.Parse ( "远程计算机 IP 地
址" ) ;
IPEndPoint host = new IPEndPoint ( HostIP , 8080 ) ;
UdpClient.Send ( "发送的字节" , "发送的字节长度" , host ) ;
(2). 知道远程计算机名称::
知道远程计算机名称后,利用"Send"方法直接把 UDP 数据包发送到远程主机的指定端口号上了,这
种调用方式也是最容易的,语法如下:
public int Send (
byte[ ] dgram ,
剩余11页未读,继续阅读
a960913117
- 粉丝: 1
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现本份代码能对图像进行gabor滤波处理,结合指纹方向图以及指纹沟壑频率特性,对指纹图像进行增强.rar
- 基于matlab实现RBM神经网络实现了手写数字体识别的GUI程序.rar
- 基于matlab实现蝙蝠算法优化相关向量机建模对数据进行建模和预测.rar
- 基于matlab实现编写的禁忌搜索算法,解决了TSP问题,对初学者有重要的参考价值.rar
- 基于matlab实现SOH关于IMU进行姿态求解的C代码,里面包含了两套代码,分别是重力约束法求解和梯度下降法求解.rar
- 1_简单电子邮件客户端.zip
- 基于matlab实现powell优化搜索算法,适合于多参数优化且目标函数中不包含参数的情况.rar
- 基于matlab实现PID神经网络前向和反向学习算法的matlab的原程序代码.rar
- 基于matlab实现nsga-2的多目标优化算法,有注解.rar
- AIR-AP1815-K9-ME-8-5-182-0.zipFor 1815 1830 1840 1850 2700 3700
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0