Я пытаюсь сделать что-то очень простое, что не работает: с моим приложением C# я просто хочу слушать пакеты UDP на конкретном порту. С Wireshark я очень хорошо вижу, что пакеты, которые мне нужны, получаются отлично (CRC и все в порядке).Приложение C#, просто не получающее данные UDP
Однако ни один из кодов, которые я нашел в Интернете, не работает. Например, эта ошибка также не удалась:
private void ReceiveAsync()
{
UdpClient Client = new UdpClient(new IPEndPoint(IPAddress.Any, 51200));
try
{
Client.BeginReceive(new AsyncCallback(OnReceive), null);
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
}
}
private static void OnReceive(IAsyncResult result)
{
System.Windows.Forms.MessageBox.Show("Simply to tell you that something was received on the port");
}
Установлены две сетевые карты Ethernet. Может быть, это может быть проблемой? Но даже если я конкретно укажу IP-адрес, это ничего не изменит.
UdpClient Client = new UdpClient(new IPEndPoint(IPAddress.Parse("10.0.0.2"), 51200));
Я был бы очень рад любым идеям, которые могли бы решить эту проблему. Большое спасибо!
Если это не получится получить в течение 24 часов, я поставлю щедрость. – Renan
'OnReceive' не будет вызываться в контексте пользовательского интерфейса (он будет работать в потоке ThreadPool), поэтому отображение MessageBox может быть ненадежным. Замените это с помощью Debug.WriteLine и запустите в отладчике и отправьте. – spender
Вы вызываете BeginReceive(), но никогда EndReceive()? Я думаю, вам нужно передать объект Client в OnReceiveMethod для вызова client.EndReceive() есть – C4stor