我正在 Linux 2.6.38 上用 Python 2.7 编写一个简单的 UDP 聊天服务器。
如何读取主机(客户端)在发送 UDP 段时收到的 ICMP 错误消息,比如无法访问的服务器?
我试过了
sockFd.setsockopt( socket.IPPROTO_IP, socket.IP_RECVERR, 1 )
但是 socket.IP_RECVERR 没有在 socket 模块中定义。
我尝试在 sockFd.recvfrom 上使用超时并再次执行 sendto 但这没有帮助。是否有 API 可以读取主机收到的 ICMP 错误?
最佳答案
这个问题有点老,但我也遇到过同样的问题,所以我会回答。
常量 IP_RECVERR
是在“IN”模块中定义的,所以下一条语句应该完成这项工作:
import socket
import IN
sockFd.setsockopt( socket.IPPROTO_IP, IN.IP_RECVERR, 1 )
关于python - 在 Python 中的 UDP 套接字上接收 ICMP 主机不可达消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15036522/