Поддерживает ли Socket ReceiveAsync UDP? - PullRequest
2 голосов
/ 20 апреля 2011

Я видел примеры ReceiveAsync для TCP, но не UDP. Совместим ли ReceiveAsync с UDP? Если да, видели ли вы какие-либо примеры?

Спасибо.

1 Ответ

5 голосов
/ 20 апреля 2011

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);
...