Я ищу способ проверить работоспособность в .NET. Сценарий предназначен как для UDP, так и для TCP.
В настоящее время в TCP я подключаюсь к одной стороне, и, когда нет данных для отправки, она отправляет подтверждение активности каждые X секунд.
Я хочу, чтобы другая сторона проверила данные, и если не было получено в течение X секунд, чтобы вызвать событие или около того.
Один из способов, которыми я пытался сделать, - это блокировать прием и установить для RecieveTimeout сокета значение X секунд. Но проблема заключалась в том, что всякий раз, когда происходил тайм-аут, приемник сокета генерировал исключение SocketExeception, и сокет на этой стороне закрывался, это правильное поведение? почему сокет закрывается / умирает после тайм-аута, а не просто продолжается?
Проверка наличия данных и спящего режима неприемлема (поскольку я могу отстать при получении данных во время сна).
Итак, как лучше всего это сделать, и почему метод, который я описал с другой стороны, не работает?