我想在Linux下用Python打开一个原始套接字。蟒蛇原始套接字:协议不支持
我简单的代码:
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 5454))
而且我得到了这个错误:
[ERROR] Protocol not supported
顺便说一句,我使用的linux下的12.04蟒蛇2.7.3,和我用root运行码。
有没有人有线索?
更新:我的灵魂, 由dstromberg给出的解决方案是正确的。如果你想要所有的数据包,然后使用他的解决方案。 但是,还有另一种组合
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
也有效。
在这种情况下,您将收到所有带有IP和TCP标头的TCP数据包。 如果你使用dstromberg的解决方案,你也会看到以太网头。所以这取决于你希望你的数据包有多“原始”~~
FYI我运行它作为根时得到同样的错误。 – pts
试试'AF_UNIX',而不是'AF_INET'。 – Anthony
@Anthony,它似乎工作。不过,我得到了新的错误。让我做一些测试,看看它是否有效。感谢您的建议~~~ –