PythonのRaw socketでmodule ‘socket’ has no attribute ‘AF_PACKET’

PythonでRaw socketを使用して通信をさせたかった。

サンプルコードを試した際にエラーが出たので忘れないように残しておく。

環境とサンプルコード

  • Mac OS Mojave 10.14.6
  • Python 3.6.5
#/bin/python
import socket
ETH_P_ALL = 3
if = 'if_name'
s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(ETH_P_ALL))
s.bind((if, 0))
data = s.recv(1024)
print(data)
s.close()

実行結果

上記コードを実行したところ以下のエラーが出た。

AttributeError: module 'socket' has no attribute 'AF_PACKET'

stack overflowをみたところ、AF_PACKETはMac OSでは機能しないらしい。

Linuxでは動作するらしいのでubuntuで試したところ動作した。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です