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で試したところ動作した。