UdpClient Receive не возвращается до 2-го вещания

Я думаю, что это действительно странно. Попытка использовать UdpClient для синхронного приема широковещательного сообщения, но не возвращается, хотя широковещание завершено. Только при последующей трансляции я получил сообщение. Я думаю, что есть ошибка где-то в рамках?

clientListener.BeginReceive(new AsyncCallback(RxBcastCallback), clientListener);
//this is passed as AsyncCall.AsyncState in the callback

.....

UdpClient udpListener = (UdpClient)AsyncCall.AsyncState;        

IPEndPoint remoteEndPt = new IPEndPoint(IPAddress.Any, 0);

byte[] inBuffer = udpListener.Receive(ref remoteEndPt); 
//does not return until subsequent broadcast

спасибо Кенни

1 ответ

Решение

Ваша конечная точка обратного вызова, вероятно, должна быть:

UdpClient udpListener = (UdpClient)AsyncCall.AsyncState;
IPEndPoint e = (IPEndPoint)((UdpState)(AsyncCall.AsyncState)).e;
byte[] inBuffer= udpListener.EndReceive(AsyncCall, ref e);
Другие вопросы по тегам