Исходя из предположения, что протокол UDP является протоколом без установления соединения, я предположил, что хост вверх или вниз будет неактуальным.«Connected» UDP-разъем получает порт ICMP Unreachable
Однако теперь, когда я тестирую, я обнаружил, что когда я подключил свой клиентский сокет UDP, write
к этому сокету возвращает ошибку, потому что сервер отправил сообщение об ошибке ICMP Port Unreachable.
цель «соединительном» порт UDP (по Stevens Unix Сетевое программирование) состоит в основном кэши запись из таблицы маршрутизации, а не создавать новый для каждого пакета, который должен имеют преимущества в производительности.
Однако этот ICMP-пакет вызывает у меня потерянный клиентский сокет, что очень раздражает.
Может ли кто-нибудь пролить свет на то, почему это может быть? Существуют ли какие-либо известные способы обхода?
Я использую библиотеку java 3p, которая не учитывает это и просто отключается, и мне, вероятно, придется взломать ее для повторного подключения, но прежде чем я это сделаю, я как бы надеялся, что есть что-то, что я мог бы сделать в (Linux) уровень операционной системы, возможно, чтобы это не происходило ... все исследования вариантов сокетов и т. д. оказались бесплодными.
EDIT
В целом это не представляется возможным, и фиксируя код является единственным способом сделать это.
Единственная возможность, по-видимому, заключается в настройке iptables для блокировки ответов ICMP, но это немного кувалда, чтобы взломать эту конкретную гайку.
Тем не менее, я не уверен, что понимаю ваш вопрос. Вы попытались подключить сокет к конечной точке, которая недоступна, и получили ошибку ICMP. Почему вы не ошиблись, если попытаетесь «написать»? – Alnitak
Потому что это * connectionless * - действительно, если бы я не подключился, я бы не получил эту ошибку. Не вводите в заблуждение связанное слово, просто потому, что это не то, что это означает в контексте датаграммы. Как я уже сказал, Стивенс даже кажется загадочным. – robert
Давайте продолжим обсуждение в чате (http://chat.stackoverflow.com/rooms/134756/discussion-between-alnitak-and-robert). – Alnitak