Я пытаюсь отправить данные с моего ноутбука на 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 (вторая картинка ответ на запрос вещания):
ли кто-нибудь есть решение для исправления этой проблемы? Спасибо.
Если Вы проверили бы Поисковик первых, это может быть дубликатом этого поста: http://stackoverflow.com/questions/24363729/c-sharp-application-not-receiving-packets-on -udpclient-receive – icbytes
Вам не нужно вызывать 'Connect', и здесь приведен пример быстрого распространения через UDP, https://github.com/lextm/sharpsnmplib/blob/master/SharpSnmpLib/Messaging/Discoverer. CS –