繁体   English   中英

在Python中的UDP套接字上接收ICMP主机无法访问消息

[英]Receiving ICMP Host Unreachable message on UDP socket in Python

我正在Linux 2.6.38上的Python 2.7中编写一个简单的UDP聊天服务器。

如何在主机(客户端)发送UDP段(如无法访问的服务器)时收到ICMP错误消息?

我试过了

sockFd.setsockopt( socket.IPPROTO_IP, socket.IP_RECVERR, 1 ) 

socket.IP_RECVERR未在套接字模块中定义。

我尝试在sockFd.recvfrom上使用超时并再次执行sendto,但这没有帮助。 是否有API来读取主机收到的ICMP错误?

这个问题有点旧,但我会回答它,因为我遇到了同样的问题。

常量IP_RECVERR在“IN”模块中定义,因此下一个语句应该完成这项工作:

import socket
import IN
sockFd.setsockopt( socket.IPPROTO_IP, IN.IP_RECVERR, 1 )

ICMP错误基本上没用。 如果收到错误,则无法确保另一端未收到该数据包。 如果您没有收到错误,则无法确保另一端确实收到了数据包。 所以几乎没有理由去做这件事。

如果你告诉我们你认为你需要这么做的原因,我们可以告诉你应该做些什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM