我正在使用Python中的套接字模块进行一些基本的UDP客户端 - 服务器通信。我需要做的很简单:客户端向服务器发送数据包,服务器使用客户端的公共IP地址,端口和代表UDP数据包到达服务器时的TTL的数字进行回答。这是我的主要问题:有没有办法用recvfrom()左右接收数据包,并读取它到达我服务器时的TTL值?
非常感谢!
Matteo Monti
答案 0 :(得分:2)
我认为你想要setsockopt(IP_RECVTTL),然后使用recvmsg()。但是Python似乎没有在其标准库中使用recvmsg(参见http://bugs.python.org/issue6560)。因此,您可能需要编写一个可由Python导入的小型C或C ++共享库,它可以满足您的需求。或者尝试使用第一页链接的补丁。
答案 1 :(得分:1)
Python 3.51支持IP_RECVTTL或IP_RECVTOS等标志。我试了一下它在3.x linux内核中对我有用。
答案 2 :(得分:0)
据我所知,这通常不会暴露给用户空间。我认为你必须使用像libpcap这样的东西才能完成这个,正如Stack Overflow回答所述: