3

ソケットを使用してJavaでアプリケーションを作成しました。私のコンピューターはサーバーで、私の電話(Android)はクライアントです。私がやろうとしているのは、文字列を電話からクライアント PC に転送することだけです。

ルーターを構成し、使用しているポートを開くと、すべて正常に動作します。顧客がアプリケーションをインストールするたびに、ルーターでポートを開く必要があるわけではありません。

サーバーコードを実行するリモートサーバーを使用することを考えました。しかし、それができるサーバーが見つかりませんでした。私は私のPCをすべての顧客のサーバーにしたくありません.

すべてのチャット会社は、ポートを開かずにどのようにそれを行うのですか?

4

2 に答える 2

4

UPnP を調べる必要があります。これは、ポートを転送せずに外部接続を許可するために /all/ torrent クライアントではないにしても /most/ を使用するものです。チャット クライアントがそれを行う方法は、別のシナリオです。UDP (外部サーバーを使用) を使用したファイアウォール ホール パンチングなどのハッキングを使用します。 UDP ホール パンチングの詳細については、リンクを参照してください。

UPnP の使用法については、この記事http://www.codeproject.com/Articles/13285/Using-UPnP-for-Programmatic-Port-Forwardings-and-Nも参照してください。これは C++ ですが、理解していただけると思います。

編集: http://4thline.org/projects/cling/これを見つけました。私はそれがあなたを助けることができると思います.

于 2012-11-25T14:15:22.770 に答える
-1

おそらくルーターのファイアウォールが原因でポートを開く必要がありました:)。すでに開いている場合は、ポート9090としましょう。そうすれば、すべてのクライアントアプリ(Androidフォン)がそれに接続できるようになります:)。もちろん、誰かが自分のPCにサーバーをインストールしたい場合は、おそらくいくつかのポートを転送し、いくつかのファイアウォールを無効にします。特別な要件のないサーバーが必要な場合は、VPSを検索します。:)

于 2012-11-25T12:57:55.543 に答える