У меня есть UdpClient
получение данных с установленным тайм-аутом, например:
UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Any, 12345));
client.Client.ReceiveTimeout = 5000; // 5 second timeout
while (!shutdown) {
IPEndPoint source = null;
byte[] data = client.Receive(ref source);
}
Receive
- задокументировано как выдача SocketException
если "произошла ошибка, когда доступ к сокету ". Поведение настройки ReceiveTimeout
также задокументировано как выбрасывание SocketException
, если время синхронной операции истекло.
Если я получаю SocketException
из Receive
, когда тайм-аут установить, как я могу определить, было ли исключение вызвано тайм-аутом, а не более серьезной ошибкой?
Я подтвердил, что исключение, вызванное тайм-аутом, является действительным SocketException
, а не каким-то конкретным c подклассом этого Единственное, о чем я могу подумать, это проверить сообщение об исключении, которое мне не особо нравится.