1

Android用のP2Pチャットアプリケーションを作成する予定です:

だからここに私の考えがあります:

  1. クライアントはサーバーに接続して、(友人の) IP アドレスのリストをダウンロードします。
  2. 次に、(指定されたポートで) 友人の IP アドレスへのソケットを開き、それをソケットに書き込もうとします。
  3. 友人のクライアントはソケットを開き、そこから読み取ります。

アイデアは単純ですが (おそらく単純すぎるのでしょうか?)、このアイデアには固有の問題があるようです。

NAT と動的 IP では、実際の IP を見つけるのが難しい場合があります。

クライアントがサーバー上の IP アドレスを定期的に更新する場合でも (デバイス自体からローカル IP を取得でき、サーバーからパブリック IP を取得できます)、デバイスへのソケットを開く必要がある場合、どの IP アドレスを開きますか?へのソケット?パブリックまたはローカル IP?

明らかに、ローカル IP へのソケットを開くことはできませんが、パブリック IP へのソケットを開いた場合 (友人のクライアントが相手側でリッスンしている場合)、メッセージはどのようにして友人のデバイスに到達するのでしょうか?

4

1 に答える 1

0

プライベート アドレスはパブリック インターネット上でルーティングされないため使用できません。そのため、パブリック IP を使用する必要があります。サーバーへのリクエストはそのパブリック IP から送信されるため、実際の IP アドレスを見つけることはそれほど難しくありません。本当の課題は、PAT (NAT) が引き起こす問題をどのように軽減するかです。IGD プロトコル (UPnP) を使用して、ポート マッピングを自動的に構成することができますが、すべてのルーターがそれをサポートしているわけではありません。また、UPnP を使用してパブリック IP を取得することもできます。

于 2013-08-05T19:32:41.030 に答える