我在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