2017-05-27 18 views
3

私はjavafxとjava.netパッケージを使って簡単なメッセージングプログラムを作ろうとしています。今私は、ランダムなポートでserversocketとclientソケットを使って接続するクライアントクラスとサーバークラスを持っています。同じワイファイに接続されていてIPアドレスを指定している限り、同じコンピュータで実行したり、別のコンピュータで実行したりすると機能します。無線LANでJavaソケットを接続していますか?

ただし、2台のコンピュータが同じWi-Fiに接続されていないと機能しません。どのようにして動作させるのですか?申し訳ありませんが、私はjava.netとネットワーキングが初めてです。

+0

申し訳ありませんが、その質問とGoogleのヒットは、自分のコードがすでに動作しているLANネットワークを介した通信に関係します。私は、コンピュータが異なるルータやISPを介して接続されているWANネットワーク上で通信する方法を知る必要があります。おそらくセキュリティ上の問題があると思われますが、それを修正する方法がわかりません。ごめんなさい。 –

答えて

1

ルータのtraverse the NATが必要です。 これは、次のいずれかの方法で実行できます。

ルーターがサポートしている場合は、this oneのようなUPnPライブラリを使用できます。 UPnPは基本的に、ルーターにポート上の外部ネットワークとの通信を許可するように要求します。

しかし、すべてのルータがUPnPをサポートしているわけではないので、STUNのようなポートパンチプロトコルを試すことができます。利用可能なJava用にはlibrariesがあります。

これが機能しない場合は、TURNのようなプロトコルを使用して、自分のサーバーを介してネットワークトラフィックを中継する必要があります。

以前の2つのプロトコルを組み合わせたICEプロトコルがあります。 javaでは、これはICE4Jのようなライブラリで行うことができます。

+0

ああ、私のルーターでポートフォワーディングをしていました。ありがとうございました! –

+1

こんにちは@アルバートジーンあなたの質問を解決した場合は、チェックマークをクリックして[受け入れ](https://meta.stackexchange.com/q/5234/179419)を検討してください。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。 – Bernd

関連する問題