Ethernet II proto 0x8888 で未加工のソケットを使用して、Python でワイヤレス ブリッジ用の小さな構成ユーティリティを作成しています。Python の raw ソケットに関するチュートリアルがいくつかありますが、それらはすべて、ネットワーク インターフェイス (「eth0」、「eth1」など) をハードコードしているように見えます。 (私のラップトップでは「wlan0」)。
私の現在の作業コードは次のとおりです(残念ながらハードコードされた「wlan0」を使用):
# Create an Ethernet II broadcast of ethertype 0x8888:
s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, 0x8888)
s.bind(("wlan0",0x8888))
ifName,ifProto,pktType,hwType,hwAddr = s.getsockname()
txFrame = struct.pack("!6s6sH","\xFF\xFF\xFF\xFF\xFF\xFF",hwAddr,0x8888) + "\x00"*0x32
# Send and wait for response
s.send(txFrame)
ハードコードする代わりに、現在のシステムでネットワーク インターフェイス名を取得する方法はありますか?
私は INADDR_ANY を試しましたが、それもうまくいきません。