2016-02-09 4 views
1

Я пытаюсь отправить данные с моего ноутбука на UDP-сервер, который обменивается данными на порте 30718. Передача данных верна, но когда я хочу получать ответ, программа stucks на UdpClient .receive(). я пытался обнюхать сеть с помощью wirehark, и кажется, что ответ доставлен правильно, но C# его не получит. Вот мой код:C# UdpClient.receive() не получает ответы на запрос широковещания

private void button1_Click(object sender, EventArgs e) 
    { 
     byte[] data = new byte[4]; 
     data[0] = 0x00; 
     data[1] = 0x01; 
     data[2] = 0x00; 
     data[3] = 0xF6; 

     byte[] rcvPacket = new Byte[1024]; 
     UdpClient client = new UdpClient(); 
     IPAddress address = IPAddress.Parse("255.255.255.255"); 
     client.EnableBroadcast = true; 
     client.Connect(address, 30718); 
     IPEndPoint remoteIPEndPoint = new IPEndPoint(IPAddress.Any, 0); 


     client.Send(data, 4); 
     rcvPacket = client.Receive(ref remoteIPEndPoint); 

     string rcvData = Encoding.ASCII.GetString(rcvPacket); 
     client.Close(); //close connection 
    } 

А вот выход из Wireshark (вторая картинка ответ на запрос вещания): wireshark1

wireshark2

ли кто-нибудь есть решение для исправления этой проблемы? Спасибо.

+0

Если Вы проверили бы Поисковик первых, это может быть дубликатом этого поста: http://stackoverflow.com/questions/24363729/c-sharp-application-not-receiving-packets-on -udpclient-receive – icbytes

+0

Вам не нужно вызывать 'Connect', и здесь приведен пример быстрого распространения через UDP, https://github.com/lextm/sharpsnmplib/blob/master/SharpSnmpLib/Messaging/Discoverer. CS –

ответ