1

私は最近、Androidデバイスがアプリケーションを実行している別のAndroidデバイスと通信できるAndroidアプリケーションを開発しました。通信はソケットを介して機能するため、コンピューターで実行するサーバーを開発しました。

これが私の問題です:

すべてのデバイスとPCが同じLAN内にある(たとえば、同じルーターを介して接続されている)限り、PCで実行されているサーバーを介したデバイス間の通信は正常に機能します。

次に、サーバーをオンラインにして、Androidデバイスが「オンライン」サーバーに接続し、サーバーを介してどこからでも相互に通信できるようにします。

サーバーをオンラインにして実行する方法がわかりません。どうやってやるの?

主な問題は、ローカルでのクライアント/サーバー通信については知っているが、「オンライン」セクターの経験がないことです。

4

1 に答える 1

2

これは、プログラミングの問題というよりもネットワークの問題です。サーバーはソケットを開くため、そのソケットに到達できるすべてのユーザーが利用できます。

ルーターでリダイレクトを行う必要があります。問題は、マシンにパブリックIPがなく、ルーターだけにパブリックIPがあることです。したがって、たとえばルーターがポート21でパケットを受信した場合、ルーターはそれをどう処理するかを知りません。「ポート21はローカルIPXXXにリダイレクトする必要があります」と言うように設定する必要があります

また、ISPによっては、モデム/ルーターのパブリックIPが変更される可能性があります。固定IPを使用している場合、それは変更されません。そうでない場合は、dyndnsなどのソフトウェアをインストールして、ドメイン名をIPに関連付ける必要があります。

于 2012-11-20T23:12:53.277 に答える