いくつかのデータの UDP ブロードキャストがあります。OSX 10.6.8の下で、Python 2.6.1で次のクライアントを開くことができ、動作します。データをキャッチできます。すべて問題ありません。
しかし、このコードはポートを「消費」します。つまり、別のポートを開くことができず、バインドの 2 回目の試行が失敗します...そして、複数のリスナーを許可する必要があります。ポートを開くコードは次のとおりです。
import select, socket
port = 58083 # port msg is broadcast upon
# Create listening port
# ---------------------
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
s.bind(('', port))
except:
print 'failure to bind'
s.close()
raise
s.setblocking(0)
...UDP は(とりわけ) 複数のクライアントへのブロードキャストを目的としているため、何か間違ったことをしていると思います。私はちょうど何を理解することはできません。
提案したアクティブステートの例を見つけました:
s.bind(('<broadcast>',port))
...しかし、それは毎回失敗します。バインドは0.0.0.0
機能しますが、「クライアントが 1 つ」という問題もあります。ローカル IP (例: ) へのバインド192.168.1.100
がまったく機能しません。バインドの削除はまったく機能しません。
誰?