パケットをリッスンするカスタム アプリケーションで重要なイベントが発生したときにそれらを処理できるように、常にデータをソケットに発行するように拡張したいアプリケーションがあります。
私の傾向は、UDP を介しlocalhost
てサーバーからすべての既知のクライアントにパケットを送信することです。これには、クライアントが などの既知のサーバーアドレスにメッセージを送信し127.0.0.1:12345
、独自のアドレスを使用してサブスクライブし127.0.0.1:54321
、サーバーがパケットのコピーをそれぞれに送信しますイベントが発生するたびにアクティブなサブスクライバー。
ここで解決する必要があるいくつかの問題があります。
サーバーが競合している可能性があり、同じ「既知の」サーバー ポートをバインドしようとする可能性があります。
127.0.0.1:12345
クライアントは、利用可能なすべてのサーバーがメッセージを発行していることを認識して、ユーザーがリッスンしたいサーバーを選択できるようにする必要があります。
これはUDPであるため、サーバーは各クライアントにまだリッスンしているかどうかを定期的に尋ねる必要があります
もっと良い方法があるはずです!クライアントがすべて同じポートを共有できるようにネットワーク通信を作成する方法はありますか (クライアントとサーバーのハンドシェイクは必要ありません)。これをLAN全体に拡張したい場合、この情報を興味のあるマシンに簡単に公開するにはどうすればよいですか(傾向はマルチキャストですが、それが最もクリーンなアプローチです。一部またはすべてのクライアントがローカルホストに存在する場合、マルチキャストを機能させるにはどうすればよいですか)?