我正在Linux 2.6.38上的Python 2.7中编写一个简单的UDP聊天服务器。
如果主机(客户端)在发送UDP段(例如无法访问的服务器)时收到ICMP错误消息,该怎么办?
我试过
sockFd.setsockopt( socket.IPPROTO_IP, socket.IP_RECVERR, 1 )
但 socket 模块中未定义 socket.IP_RECVERR 。
我尝试在sockFd.recvfrom上使用超时并再次执行 sendto ,但这没有用。是否有API来读取主机收到的ICMP错误?
答案 0 :(得分:2)
这个问题有点陈旧但我会回答它,因为我遇到了同样的问题。
常数IP_RECVERR
在" IN"中定义。模块,所以下一个语句应该完成这项工作:
import socket
import IN
sockFd.setsockopt( socket.IPPROTO_IP, IN.IP_RECVERR, 1 )
答案 1 :(得分:-2)
ICMP错误基本上没用。如果收到错误,则无法确保另一端未收到该数据包。如果您没有收到错误,则无法确保另一端确实收到了数据包。所以几乎没有理由去做这件事。
如果您告诉我们您认为需要这样做的原因,我们可以告诉您应该做些什么。