当我打开类似Python的网络连接时
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('www.heise.de', 80))
我可以从控制台读取连接状态:
netstat --all --program|grep <PID>
tcp 0 0 10.10.10.6:39328 www.heise.de:http VERBUNDEN 23829/python
但是我怎么能读取这个连接状态,连接,关闭等等。。。从Python内部?阅读socket documentation并没有给我任何提示。
这仅适用于Linux:
你需要打个电话。级别为“IPPROTO_TCP”,选项为“TCP_INFO”, 如tcp manual所建议。它将以 在定义的here中,还可以找到状态值的枚举。
您可以尝试以下示例:
您要查找的是打印元组中的第一个项(整数)。你可以 用tcp_info定义交叉检查结果。
注意:tcp_info的大小应该是104,但我用92得到它,不知道发生了什么,但它对我有效。
在Linux上,可以使用
getsockopt(2)
的TCP_INFO
选项来了解连接的状态。我刚刚把这个问题的一半解决方案用胶带粘在一起,以防谷歌把其他人带到这里来。
一旦识别出这个套接字,该怎么做仍然是待定的。
相关问题 更多 >
编程相关推荐