2017-06-23 8 views
1

Javaを使用してパブリックIPでソケットを開こうとしています。パブリックIP、ポート転送なしのjavaでソケットを作成しようとしていますか?

私はサーバープログラムとクライアントプログラムを持っていますが、それらを両方ともlocalhostを使って接続できます。私はまた、ポート上で私のPCをportforwarded、私はプログラムを接続することができますこのポートを使用しています。 しかし、ポートを開かずに接続することは可能ですか?

私はこのIPチャットプログラムを開発しており、すべてのユーザーにポートを開かせるのは非常に不便です。

Server.javaが含まれています:

ServerSocket Server = new ServerSocket(Port number); 

Client.javaは含まれています

try { 
    Socket clientSocket = new Socket(public_ip, Port number); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

私はどのような援助に感謝、私はソケットに非常に新しいです!

答えて

0

デフォルトでは、受信接続はブロックされていますが、これはセキュリティ上の理由から行われます。アウトバウンド接続は通常ブロックされません。だから最善の解決策は、サーバーを持つことです。クライアントは問題なく接続し(アウトバウンド接続が許可されます)、サーバーはクライアントにデータを転送します。

サーバーが接続を使用してクライアントにメッセージを配信する方法、クライアントの送信 - クライアントが新しいメッセージがあるかどうかを尋ねてきます。

+0

ああ、天才です、ありがとうございます。だから私はサーバー上で移植していますか? –

+0

@OllyScargill正確には、サーバーにメッセージを保存し、クライアントがサーバーに接続してフェッチするようにします。サーバーからクライアントに接続しないでください。 – ekaerovets

関連する問題