私は現在、LAN上でそれ自体の他のインスタンスを検出する必要があるpythonプログラムを作成しています。ディスカバリに UDP ブロードキャストを使用します(255.255.255.255
)。
問題は、コンピューターに複数のネットワーク アダプターがある (複数のネットワークに接続されている) 場合、それらのネットワークの 1 つだけがブロードキャストを受信することです。私の最初のアイデアは、ローカル ネットワークに割り当てられたすべてのネットワーク アドレスを列挙し、それぞれに対してブロードキャスト パケットを送信することでした (たとえば192.168.0.255
、 と192.168.1.255
)。ただし、すべてのローカル ネットワーク アドレスを検出する信頼できる方法はないようです。私が見つけて試したものはすべて、python-2 のみのライブラリに依存しているか127.0.1.1
、Linux 仮想マシン (192.168.0.100
および他のいくつかのライブラリ) にのみ返されるためです。
この場合、利用可能なすべてのネットワークにブロードキャストするにはどうすればよいですか?
私は Python 3 を使用しており、プラットフォームに依存しない方法を探しています。大きなサードパーティ ライブラリは必要ありません。すべてのネットワーク インターフェイスを表示するライブラリがcorrectly
その仕事をします。