如何在阻塞套接字中捕获超时

How to catch timeout in blocking socket

我正在尝试制作 Blocking UDP socket(服务器)

如果没有收到数据,socket 将永远挂起。

我想5 sec timeout.

有什么解决办法吗?

byte[] data = new byte[1024];

socket.Bind(endpoint);         
socket.Blocking = true;

EndPoint tmpRemote = (EndPoint)sender;
while (true)
{
   try
   {
      recv = socket.ReceiveFrom(data, ref tmpRemote);
   }
}

Socket class 包含 ReceiveTimeOut 属性 。您可以为此 属性 设置任何值并在发生超时时捕获异常。 请检查此 url :https://www.demo2s.com/csharp/csharp-socket-receivetimeout.html