Android用のP2Pチャットアプリケーションを作成する予定です:
だからここに私の考えがあります:
- クライアントはサーバーに接続して、(友人の) IP アドレスのリストをダウンロードします。
- 次に、(指定されたポートで) 友人の IP アドレスへのソケットを開き、それをソケットに書き込もうとします。
- 友人のクライアントはソケットを開き、そこから読み取ります。
アイデアは単純ですが (おそらく単純すぎるのでしょうか?)、このアイデアには固有の問題があるようです。
NAT と動的 IP では、実際の IP を見つけるのが難しい場合があります。
クライアントがサーバー上の IP アドレスを定期的に更新する場合でも (デバイス自体からローカル IP を取得でき、サーバーからパブリック IP を取得できます)、デバイスへのソケットを開く必要がある場合、どの IP アドレスを開きますか?へのソケット?パブリックまたはローカル IP?
明らかに、ローカル IP へのソケットを開くことはできませんが、パブリック IP へのソケットを開いた場合 (友人のクライアントが相手側でリッスンしている場合)、メッセージはどのようにして友人のデバイスに到達するのでしょうか?