欢迎来到天天文库
浏览记录
ID:38047262
大小:39.00 KB
页数:5页
时间:2019-05-23
《c#实现udp协议》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、本文由ligong528贡献doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。C#实现UDP协议实现一.走进UDP协议:UDP(UserDatagramProtocol)协议就是"用户数据报协议",它是一种无连接的协议,无连接主要是和TCP协议相比较的。我们知道当利用TCP协议传送数据的时候,首先必须先建立连接(也就是所谓的握手)才可以传输数据。而当计算机利用UDP协议进行数据传输的时候,发送方只需要知道对方的IP地址和端口号就可以发送数据,而并不需要进行连接。当然
2、如果你非要进行连接,通过VisualC#也是可以实现的,但前提是要确定连接的远程主机的端口号处于监听状态,否则程序会出现不必要的错误,但这是种画蛇添足的做法,不仅丢失了UDP协议的无连接传送数据的特点和优点,而且还给程序运行带来了不安定的因素。所以这种方法并不值得提倡。由于UDP协议并不需要进行确定的连接,所以编写基于UDP协议的应用程序比起编写基于TCP协议的应用程序要简单些(程序中可以不需要考虑连接和一些异常的捕获工作)。但同时也给基于UDP协议编写的程序带来了一个致命的缺点,UDP由于不提供可
3、靠数据的传输,当计算机之间利用UDP协议传送数据的时候,发送方只管发送数据,而并不确认数据是否被对方接收。这样就会导致某些UDP协议数据包在传送的过程中丢失,尤其网络质量不令人满意的情况下,丢失数据包的现象会更严重。这就是为什么在网络上传输重要数据不采用UDP协议的原因。但是我们也不能因为这一个缺点就全面否定UDP协议,这是因为虽然利用UDP协议来传送安全性要求高的数据是不适合的,但对于那些不重要的数据,或者即使丢失若干数据包也不影响整体性的数据,如音频数据,视频数据等,采用UDP协议就是一个非常不
4、错的选择。如目前网络流行的很多即时聊天程序,如OICQ和ICQ等,采用的就是UDP协议。同时虽然UDP协议无法保证数据可靠性,但具有对网络资源开销较小,数据处理速度快的优点,所以在有些对数据安全性要求不是很高的情况下,采用UDP协议也是一个非常不错的选择。总结一下上面的内容,可见UDP是一种不面向连接的网络协议,既有其优点,也有其不足,具体如下:1.基于UDP协议的网络应用程序,实现起来比较简单,并且基于UDP协议的网络应用程序在运行时,由于受到环境影响较小,所以不容易出错。2.UDP协议占用网络资
5、源较少,数据处理较快,所以在网络中传送对安全性要求不是十分高数据时,其优点比较明显。所谓对安全性要求不高的数据,是指那些不重要的数据,或者是即使丢失若干数据,也不影响其整体的数据,如音频数据等。目前很多流行的网络应用程序都是基于UDP协议的,如OICQ、ICQ等。3.由于其不是面向连接的网络协议,其缺点也是非常明显的,有些时候甚至是致命的。因为使用UDP协议来传送数据,在数据发送后,在发送方并不确认对方是否接收到。这样就可能导致传送的数据在网络中丢失,尤其在网络条件并不很好的情况下,丢失数据包的现象
6、就更多。所以传送重要数据一般不采用UDP协议。二.简介VisualC#发送、接收UDP数据包使用的主要类及其用法:用VisualC#实现UDP协议,最为常用,也是最为关键的类就是UdpClient,UdpClient位于命名空间System.Net.Sockets中,VisualC#发送、接收UDP数据包都是通过UdpClient类的。表01和表02是UdpClient类中常用方法和属性及其简要说明。方法CloseConnect说明关闭UDP连接建立与远程主机的连接DropMulticastGrou
7、p退出多路广播组JoinMulticastGroup将UdpClient添加到多路广播组ReceiveSend返回已由远程主机发送的UDP数据文报将UDP数据文报发送到远程主机表01:UdpClient类中常用方法及其说明。属性说明Active获取或设置一个值,该值指示是否已建立了与远程主机的连接Client获取或设置基础网络套接字表02:UdpClient类中常用方法及其说明。1.VisualC#使用UdpClient类发送UDP数据包:在具体使用中,一般分成二种情况:(1).知道远程计算机IP地
8、址:"Send"方法的调用语法如下:publicintSend(byte[]dgram,intbytes,IPEndPointendPoint);参数说明:dgram要发送的UDP数据文报(以字节数组表示)。bytes数据文报中的字节数。endPoint一个IPEndPoint,它表示要将数据文报发送到的主机和端口。返回值已发送的字节数。下面使用UdpClient发送UDP数据包的具体的调用例子:IPAddressHostIP=newIPAddress.Parse("
此文档下载收益归作者所有