我看过TCP的ReceiveAsync的例子,但没有看过UDP的。ReceiveAsync是否适用于UDP?如果是,你有看过任何例子吗?
谢谢。
我看过TCP的ReceiveAsync的例子,但没有看过UDP的。ReceiveAsync是否适用于UDP?如果是,你有看过任何例子吗?
谢谢。
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);
localEP
是接收数据报的端点(数据报的目标),而e.RemoteEndPoint
指定了允许接受数据报的端点(数据报的来源)。e.RemoteEndPoint = new IPEndPoint(IPAddress.IPv6Any, 0);
表示接受来自任何来源的数据报;e.RemoteEndPoint = localEP
则表示仅接受从相同端点发送的数据报。 - dtb