基于UDP是无连接协议的前提下,我推测主机是否启动或关闭无关紧要。“已连接”UDP套接字接收ICMP端口不可达
但是,现在我正在进行测试,我发现当我连接了我的UDP客户端套接字时,该套接字的write
返回错误,因为服务器已发回ICMP端口无法访问错误。
的“连接” UDP端口的目的(根据史蒂文斯UNIX网络编程)是基本上缓存从路由表中的条目,而不是为每个数据包,这是为了一个新的具有性能优势。
但是,这个ICMP数据包导致我失去了我的客户端套接字,这非常烦人。
任何人都可以阐明为什么这可能是什么?有没有已知的解决方法?
我正在使用一个3p java库,没有解决这个问题,只是断开连接,我可能不得不破解它重新连接,但在我之前,我是希望有一些我可以做的(Linux)操作系统级别可能会阻止这种情况的发生......所有对套接字选项的调查都变得毫无意义。
编辑
总之,这是不可能的,固定的代码是这样做的唯一途径。
唯一的可能性似乎是配置iptables阻止ICMP响应,但这是一个大锤来破解这个特定的螺母。
这就是说,我不知道我理解你的问题。您试图将套接字连接到不可用的端点,并且出现ICMP错误。为什么_当你尝试“写”它时,你会得到一个错误? – Alnitak
因为它*无连接* - 的确如果我没有连接,那么我不会得到这个错误。不要被连接的单词误导,只是因为它不是数据报上下文中的含义。就像我说的,史蒂文斯甚至看起来很神秘。 – robert
让我们[在聊天中继续讨论](http://chat.stackoverflow.com/rooms/134756/discussion-between-alnitak-and-robert)。 – Alnitak