C # Ожидание ответа широковещания UDP, который не приходит - PullRequest
0 голосов
/ 02 ноября 2019

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

Я пытался использовать секундомер в сочетании с циклом while без каких-либоуспех, поскольку цикл на самом деле не «зацикливается», просто ожидает входящие соединения. Это то, что исходный код, где узел широковещания прослушивает для ответа широковещания.

while (true)
{
    UdpClient udpClient = new UdpClient(2301);

    var ClientEp = new IPEndPoint(IPAddress.Any, 2301);

    byte[] bytes = udpClient.Receive(ref ClientEp);
    string recivedData = Encoding.ASCII.GetString(bytes, 0, bytes.Length);

    Console.WriteLine($"Received data: {recivedData} From: {ClientEp.Address.ToString()}");

    udpClient.Close();

}
...