我在Linux 2.6.38上使用Python 2.7写了一个简单的UDP聊天服务器。在Python中的UDP套接字上接收ICMP主机无法访问的消息
当一个主机(客户端)发送UDP段来接收一个无法访问的服务器时,如何读取ICMP错误消息?
我试图
sockFd.setsockopt(socket.IPPROTO_IP, socket.IP_RECVERR, 1)
但socket.IP_RECVERR不插座模块定义。
我试过在sockFd.recvfrom上使用超时,并且第二次做sendto但这并没有帮助。是否有API读取主机收到的ICMP错误?
+1。而且,并非所有主机都会发送ICMP。 NAT和防火墙也可能会以静默方式丢弃数据包。 – selbie 2013-02-23 04:45:32
我已经在服务器上安装了iptables,以便它发回ICMP主机不可达消息,以便收到任何UDP消息。所以,我试图在客户端验证这种行为。 – crk 2013-02-23 09:46:22
这并没有回答原来的问题。你如何应对'socket.IP_RECVERR'的缺失? – 2013-11-05 16:55:40