Контекст: я переношу приложение linux perl на С#, сервер прослушивает порт udp и поддерживает несколько параллельных диалогов с удаленными клиентами через один udp-сокет. Во время тестирования я отправляю большие объемы пакетов на сервер udp, случайно перезапуская клиентов, чтобы наблюдать за сервером, регистрирующим новые подключения. Проблема заключается в следующем: когда я убиваю клиента udp, все еще могут быть данные на сервере, предназначенном для этого клиента. Когда сервер пытается отправить эти данные, он получает сообщение icmp "no service available" и, следовательно, в сокете возникает исключение.
Я не могу повторно использовать этот сокет, когда я пытаюсь связать обработчик async С# с сокетом, он жалуется на исключение, поэтому мне нужно закрыть и снова открыть сокет udp на порте сервера. Является ли это единственным способом решения этой проблемы? Конечно, существует какой-то способ "исправления" udp-сокета, поскольку технически сокеты UDP не должны знать о статусе удаленного сокета?
Любая помощь или указатели будут высоко оценены. Спасибо.