Socket ReceiveAsync是否支持UDP?

use*_*939 2 c# sockets asynchronous udp

我已经看到了TCP的ReceiveAsync示例,但没有看到UDP.ReceiveAsync是否与UDP兼容?如果是这样,你看过任何例子吗?

谢谢.

dtb*_*dtb 5

UDP是面向数据报的协议,因此您使用Socket.ReceiveFromAsync方法.

例:

var s = new Socket(SocketType.Dgram, ProtocolType.Udp);
s.Bind(localEP);

var e = new SocketAsyncEventArgs();
e.Completed += OnReceive;
e.RemoteEndPoint = new IPEndPoint(IPAddress.IPv6Any, 0);
e.SetBuffer(new byte[BufferSize], 0, BufferSize);

if (!s.ReceiveFromAsync(e)) OnReceive(s, e);
Run Code Online (Sandbox Code Playgroud)

  • @HaMster:接收UDP数据报时,`localEP`是接收数据报的端点(数据报的目的地),`e.RemoteEndPoint`指定接受数据报的允许端点(数据报源) .`e.RemoteEndPoint = new IPEndPoint(IPAddress.IPv6Any,0);`表示接受来自任何来源的数据报; `e.RemoteEndPoint = localEP`意味着只接受从同一端点发送的数据报. (2认同)