4

2つのクライアントを(TCP / IPソケット経由で)接続したい。クライアントは、中間サーバーを使用してお互いを検出できます。クライアントがお互いを発見したら、サーバーが関与することはありません。

私はこれについていくつかの研究をしました、そして多くの人々が提案しているのを見つけましJXTAた。しかし、私は自分でプロトコルを最初から作成したいと思います(将来、WebSocketを使用して同じものを実装する必要があるかもしれないため(クライアントがブラウザーの場合))。現在、私のクライアントはデスクトップアプリケーションまたはモバイルアプリケーションです。

私の質問は次のとおりです。

  1. クライアントはサーバーでどのようにお互いを発見しますか?サーバーがクライアントのグローバルIPアドレスを相互に送信する場合、その情報はピアツーピア接続を作成するのに十分ですか?クライアントが同じLANネットワーク上にあり、サーバーが別のWAN上にある場合はどうなりますか?

  2. クライアントは動的IPアドレスを持っています。アクティブなソケットがある場合でも、IPが突然変更される可能性はありますか?

  3. ピアツーピア接続は、(チャットアプリケーションのように)非連続データの転送に対して信頼性がありますか?

[注:ピアツーピア接続とは、クライアントの1つを一時的なソケットサーバーとして作成することにより、(Javaを使用して)クライアントサーバーTCP/IPソケット接続を確立することを意味します]

前もって感謝します。

4

1 に答える 1

5

1)クライアントがサーバーに接続するとき、他のクライアントからの着信接続のために開いたままにするポート番号をサーバーに通知する必要があります。サーバーはクライアントのIPアドレスを認識します。次に、サーバーはこれらの詳細を相手方/クライアントに通信/送信する必要があります。クライアントの実際の場所に違いはありません。2つのクライアントが同じネットワーク上にある場合、ネットワークルーターはそれらを検出し、通信パスを短くします。

2)動的IPアドレスはアクティブな接続中に変更できません-変更すると接続が切断され、両方のクライアントが1)でサーバーを介して接続を再開する必要があります

3)はい

于 2012-07-20T10:22:20.260 に答える