【发布时间】:2011-04-19 21:42:43
【问题描述】:
我看到了 TCP 的 ReceiveAsync 示例,但没有看到 UDP。 ReceiveAsync 与 UDP 兼容吗?如果是这样,你见过任何例子吗?
谢谢。
【问题讨论】:
标签: c# sockets asynchronous udp
我看到了 TCP 的 ReceiveAsync 示例,但没有看到 UDP。 ReceiveAsync 与 UDP 兼容吗?如果是这样,你见过任何例子吗?
谢谢。
【问题讨论】:
标签: c# sockets asynchronous udp
UDP 是一种面向数据报的协议,因此您可以使用Socket.ReceiveFromAsync Method。
例子:
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 表示只接受从同一端点发送的数据报。