除了点对点,通常UDP数据的传递方式有两种,一种是BroadCast,一种是MultiCast。中文一般把它们翻译作广播和组播。前者是简单的在局域网里面广播;后者是借助路由器将数据发送到包括英特网在内的任何多个地址。
在C#里面,处理UDP通讯最简单的方法就是使用UdpClient。具体使用方法我也不赘述了,在msdn上就有。需要注意的问题有:
1、UDP通讯在发送的时候可以绑定任何本地端口,但是在接收的时候需要在本地绑定广播或者多播端口。
2、组播的时候发送和接收双方都需要JoinMulticastGroup。参数timeToLive名字很容易让人误会,其实它指的是允许UDP数据穿过几个路由器(当然还要路由器允许组播包通过才行);在WinSock API当中,这个参数一般叫做scope,我觉得是比较合适的参数名字;如果你不明白或者没有特别的需要,把这个参数设为5就可以了。
3、UdpClient的发送和接收都是无限阻塞的。这让编程变得更容易,但是也会带来一些麻烦。发送的问题倒不大,因为发送UDP数据基本上不会阻塞。不过接收就不一样了,最好是单独起一个线程进行接收动作,然后在需要停止接收的时候,先UdpClient.Close()再Thread.Abort()。
如果需要更灵活的控制,那么就不要使用UdpClient,改为直接使用Socket就可以了。稍微麻烦一点,不过道理一样的。
附带说一下:点对点传大量UDP数据的时候,先调用connect方法可以节省不少时间。
分享到:
相关推荐
通过多线程的方式实现了UDP收发数据 可以快速学习UDP通讯原理应进行实际应用
本人是根据他人网页的代码在C#桌面程序中实现了UDP的接收发送,实现的方式是P2P方式,因此寻求广播方式、一对多方式就不用下载了,代码简单易懂,有点基础就可以看懂并应用,里面是接收发送一起完成。亲测可用,VS...
C# 委托方式(类似事件响应,添加了MessageHandler的都可以接收到数据)实现的UDP服务器,可在多个Form接收UDP客户端发送过来的数据,在需要多个地方用到客接收数据的时候非常方便。完整的C#代码,VS2008工程。 TCP...
C# socketUdp 异步 消息发送接收
UDP 局域网异步通讯实现广播,接收发送string数据 用户就可以在一个局域网中聊天了。
使用socket类实现c# UDP组播的发送和接收 ;可以指定专门网卡接收消息;
本例用C#的UDP协议,与windows forms结合,可以接受发送消息,还可以计算数据包
基于UDP的异步发送接收的小例子,可供大家学习参考,已调试通过
socket使用udp方式发送和接收图片,包含图片测试
采用C#语言,通过UDP协议实现组播数据的上传和下载,组播地址为224.100.100.4.
用C# 编写winform程序,实现UDP一对一通信。在socket编程中UDP不需要进行连接,只要知道对方的IP和端口就能进行通信。UDP通信没有服务器和客户端之分,每台主机都是平等的。
基于C#的UDP通讯测试,默认收发都是本地IP,本地端口8000,远端端口1234,打开程序后,可向本机1234端口发送数据,也可接收本地1234端口的数据。
自己用C#编写的UDP通信协议例子,调试没问题,可用!
直白点讲就是,发送数据的时候,直接把UDP包往网络一扔就完事了,接不接受收到发送的就不理了;接受数据的时候,有发给本地的UDP包就照单全收,收完再看是谁发的。相比TCP,少了握手建立连接,维护连接,连接释放等...
C# UDP通信报错:远程主机强迫关闭了一个现有的连接。 是windows的一个bug,在linux下没有这个bug。 将代码加入程序即可解决
C#的udp服务器程序,实现发送数据和接收数据,利用了两个线程一个收的线程,一个发送的线程。
一个C#编写的UDP通信实例,在两个不同的电脑上打开项目,可以进行通信。测试用,能实现我方发送,对方接收,同时我方屏幕也记录发送数据,类似于聊天环境。
本程序为UDP打洞原理的测试程序。...两客户端建立UDP通道后,互相发送的数据不经过服务器转发,直接进行数据交互,这时可以关闭服务器程序。服务器的默认服务端口是10000,如果该端口已经被占用,请自行修改服务端口。
这是我初学c#时写的一个单向的UDP通信系统,发送的数据数据采用base64加密,接收端用到了委托,代码比较简单
C#使用UdpClient发送和接收UDP数据示例