我试图在linux下用Python打开一个原始套接字。
我的简单代码:
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 5454))
我犯了个错误:
[ERROR] Protocol not supported
顺便说一下,我使用的是Linux12.04下的Python2.7.3,我使用的是根来运行代码。
有人知道吗?
更新:dstromberg给出的The solution是正确的。如果你想要整包,那就用他的解决方案。然而,还有另一种组合:
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
这也管用。
在这种情况下,您将收到一个包含IP和TCP头的完整TCP数据包。 如果您使用dstromberg的解决方案,您还将看到以太网头。所以这取决于你想要你的包有多粗糙。
以根用户身份运行时不会出错:
试试socket.AF_UNIX,它可以解决你的问题,祝你好运。
尝试socket.AF_PACKET而不是socket.AF_INET。
相关问题 更多 >
编程相关推荐