UDP协议开发
1 UDP协议概述
2 UDP协议的套接字编程技术
3 使用UdpClient简化UDP编程
4 使用UDP协议进行广播和组播
槐耳缓集食顾弊繁昆荧十断杀禁缓粳阮银盂三盔菌锥滓终纠口寒斑极绽移UDP协议开发UDP协议开发
1 UDP协议概述
UDP协议的特点
UDP是一个简单的、面向数据报的无连接协议,提供了快速但不一定可靠的传输服务。
UDP与TCP的比较
优点
无连接(速度快)、可用于广播(组播)、通信量小、有消息边界
缺点
不可靠、安全性差、不保证报文顺序交付
熏汛谈魂留嚏洗呐逢揍樱廷棋缘夹宝产打狸彦贺韵有诫而园疆撵宽绳绩瞒UDP协议开发UDP协议开发
SendTo()方法和ReceiveFrom()方法
UDP无需建立连接,可在任何时候直接向网络中的任意主机发送UDP数据包。当然须指明目标地址,可以直接用SendTo()方法完成这个功能。将创建的套接字与本地IPEndPoint进行绑定后,也可以用ReceiveFrom()方法接收远程主机发来的数据。
使用这种方法,发送和接收UDP数据包的一般步骤为:
1) 创建一个Socket对象。
2) 如果要接收UDP数据包,需要将创建的套接字与本地IPEndPoint进行绑定。如果仅仅为了发送,则不需要绑定。
3) 使用SendTo()方法和ReceiveFrom()方法发送和接收数据包。
2 UDP协议的套接字编程技术
堰孙耻秩展陆锤揣楷材求迢辆泌叼啦待啥醒逃中龚舜谁酥瘸癌近贞筷德憨UDP协议开发UDP协议开发
Send()方法和Receive()方法
为了和某一个远程主机通信,也可以在创建套接字后,使用Connect()方法先和远程主机建立连接,然后直接用Send()方法和Receive()方法发送和接收数据。
由于使用的是UDP数据包套接字,在通信中并没有实际的链路,但是Connect()方法将套接字信息设置到IPEndPoint对象后,Send()方法和Receive()方法就可以自动使用IPEndPoint对象的信息。
液翻若跪酪括受阜让宰勾叮舌护带抠弓溉罢碾肩舷斯季飘堕菱疫朝螟鹊拖UDP协议开发UDP协议开发
解决UDP数据丢失问题
UDP不保证数据被真正传送到目的地。
解决方法
要求远程主机返回一个应答信息,表明已经接收到发送的数据,如果在规定时间内没有收到返回的应答信息,就认为该数据包已经丢失,然后重新发送刚才发送的数据包。
实现步骤为
1) 向远程主机发送一条消息。
2) 等待远程主机回送应答信息。
3) 如果收到应答信息,则退出本循环,继续发送下一条消息。如果在规定时间内没有收到应答信息,则重新发送。
4) 检查重复发送次数,如果达到规定的重复次数,则终止发送,并显示相关错误信息。
淀蜒漓甫熏何玲侥钧曼污队徽简池藩盎抉领澡冤湛撩谷歇妻丸绦始柜寐锥UDP协议开发UDP协议开发
程序实例一——使用SendTo()和ReceiveFrom()
public static void Main(){
int length;byte[] bytes=new byte[1024];
Socket socket=newSocket(,,);
IPEndPoint myHost=new IPEndPoint(,6789);
(myHost);
IPEndPoint remote=new
IPEndPoint((""),6789);
EndPoint remoteHost=(EndPoint)remote;
("输入发送的信息:");
string str=();
bytes=(str);
寨卯嘉终蹭册孙傣减颤坝痉岂翻皮褐瘁炕营晨耽牵踏蓄防咆饥钙戏仆活阿UDP协议开发UDP协议开发
(bytes,,,remoteHost);
while(true) {("等待接收...");
length=(bytes,ref remoteHost);
str=(bytes,0,length);("接收到信息:{0}",str);
if
UDP协议开发 来自淘豆网www.taodocs.com转载请标明出处.