python - 在 Python 中的 UDP 套接字上接收 ICMP 主机不可达消息

标签 python linux sockets udp icmp

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

相关文章:

python - Jupyter 笔记本 pandas_profiling : cannot import name 'to_html' from 'pandas_profiling.report'

python - 同时运行 Tkinter 窗口和 PysTray 图标

linux - 如何在 ext4 上存储十亿个文件?

c - _popen 崩溃[Windows - C]

java - 套接字绑定(bind)错误

python - 使用嵌套的 'for' 语句加速 Python 'if' 循环

Python Selenium 使用 ChromeDriver 下载图像(jpeg、png)或 PDF

java - 是否可以从 Linux 中的 Eclipse RCP 初始屏幕中删除调整 handle 大小?

linux - 如何在 Linux Shell 中将文件的创建日期和最后修改日期更改为当前时间?

python - select() 在 python 套接字中可以管理多少个文件描述符?