Я пытаюсь выяснить, как получать пакеты UDP, которые передаются набором устройств. Я вижу, как они приходят с помощью Wireshark, но не могу понять, как их получить в моем приложении. Пакеты рассылаются всем устройствам в сети через один и тот же порт. Мне нужно иметь возможность получать их с любого отправляющего IP-адреса. У меня также есть 2 карты NIC, если это имеет значение. Мне нужно слушать только 1, но я не уверен, что мне нужно указывать это. Я пробовал разные вещи с UdpClient, но не повезло.
192.168.1.20 255.255.255.255 UDP 768 Source port: 3001 Destination port: 3002
bool done = false;
UdpClient listener = new UdpClient(3001);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 3002);
string received_data;
byte[] receive_byte_array;
try
{
while (!done)
{
Debug.WriteLine("Waiting for broadcast");
receive_byte_array = listener.Receive(ref groupEP);
Debug.WriteLine("Received a broadcast from {0}", groupEP.ToString() );
received_data = Encoding.ASCII.GetString(receive_byte_array, 0, receive_byte_array.Length);
Debug.WriteLine("data follows \n{0}\n\n", received_data);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
listener.Close();