0

ユーザー(クライアント#1)がローカルIPとポートを入力し、アプリケーションがクライアント#2(同じアプリケーションを使用している)に画像を送信するアプリケーションがあります。ただし、最終的なアプリケーションでは、ユーザーがこの情報を知らないため、ユーザーにローカル IP を入力させたくありません。また、プログラムにこれを自動的に認識させたいと考えています。

私の最初のアイデア: 当初、すべてのローカル IP をスキャンして開いているポートを見つけることができると思っていましたが、これには時間がかかりすぎます。

私の 2 番目のアイデア: 私の次のアイデアは、クライアントがローカル ホスト名をリモート サーバーに送信し、リモート サーバーがそれらを交換してクライアントに送り返すようにすることでした。

ただし、2 番目のアイデアのために専用サーバーを実行したくありません。

これは設計上の問題なので、コードは含めませんが、必要に応じて含めます。

ローカル IP を自動的に把握するようにアプリケーションを設計する方法について何かアイデアはありますか?

私はこれをグーグルで検索しようとしましたが、解決策を見つけることができなかったので、1時間後にあきらめて、ここに質問を置きました. これが重複している場合は、申し訳ありませんが、この質問を削除してください。

ありがとう、ブッコ

4

1 に答える 1

1

jgroups (マルチキャスト [lan] などに基づく検出を可能にする) やピアツーピアの実装などを使用できますが、後者では最初の検出に少なくともいくつかのサーバーが必要です。

原則として、クライアントはよく知られているアドレスを使用して「世界」にメッセージを送信し、誰かが応答するのを待ちます。その間、各クライアント自体がそのようなメッセージを待ち、現在のクライアントに「接続」する方法に関する情報を返信します。これは、いわゆるブラックボードを介して行うことができます。この bb は、マルチキャスト メッセージ用の特別な tcp アドレス (os/tcp は、同時にリッスンしているすべてのクライアントにメッセージを送信します) または 1 つまたは複数のサーバー (シード) を取得して調整します。リクエストと「メンバーシップ」リスト。とにかく、いくつかのツールがあります;)

于 2013-02-18T20:24:41.203 に答える