Я впервые занимаюсь сетевым программированием и столкнулся с проблемой. Я пытаюсь передать сообщение. Все остальные устройства, на которых запущена программа и которые прослушивают, должны отправить ответное сообщение. Однако если в сети нет прослушивающих узлов, широковещательный узел, ожидающий ответа, не получит никакого ответа. В какой-то момент широковещательный узел должен перестать ждать ответа, но я не знаю, как лучше всего справиться с этим.
Я пытался использовать секундомер в сочетании с циклом 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();
}