Таймаут UDP в C#
UDP не гарантирует доставку - без входящего пакета ReceiveAsync может ждать бесконечно. Короткий таймаут задают через CancellationTokenSource. Если датаграмма не пришла, ожидание прерывается:
using System.Net.Sockets;
using UdpClient client = new(18081);
using CancellationTokenSource cts = new(TimeSpan.FromMilliseconds(10));
try
{
await client.ReceiveAsync(cts.Token);
}
catch (OperationCanceledException)
{
Console.WriteLine("timeout");
}
Порт должен быть свободен; если 18081
занят, создайте UdpClient с другим номером.