UDP-сокеты в C #? - PullRequest
       32

UDP-сокеты в C #?

1 голос
/ 31 декабря 2011

Если socket.ReceiveFrom (byte [] message, EndPoint endPoint) используется для получения данных через связанный UDP-сокет, а данные не принимаются, что происходит? Он продолжает ждать поступления данных или продолжает? Я конкретно говорю о дейтаграммах UDP.

Ответы [ 2 ]

2 голосов
/ 31 декабря 2011

Это будет ждать данных.Если это поведение не достаточно хорошо, вы можете использовать асинхронное получение.Также используйте UDPClient.Нет необходимости выполнять прокрутку с использованием самого Socket.

Если данные для чтения недоступны, метод ReceiveFrom будет блокироваться до тех пор, пока данные не станут доступны

Источник: http://msdn.microsoft.com/en-us/library/aa329728%28v=vs.71%29.aspx

1 голос
/ 31 декабря 2011

Если цель состоит в том, чтобы заставить ваш сокет перестать слушать через X секунд, чтобы вы могли сделать что-то еще (например, проверить, закрывается ли приложение) и используете ли вы синхронные сокеты, тогда я бы рекомендовал установить Socket.ReceiveTimeout до X количество секунд (умножить на 1000, поскольку Socket.ReceiveTimeout в миллисекундах), а затем перехватить результирующее исключение, которое возникает по истечении времени ожидания.

...