我想在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,它似乎工作。不過,我得到了新的錯誤。讓我做一些測試,看看它是否有效。感謝您的建議~~~ –