2012-03-07 12 views
1

2台のコンピュータをJavaに関係するサーバなしで相互にソケット接続することは可能ですか?もしそうなら、どうですか?私は、サーバーが永続的であるサーバーとクライアントの接続の例だけを見てきました。例えばJavaコンピュータとコンピュータの接続?

1. 2 people, person A and person B, want to connect using this application 
2. Person A runs application, clicks "host" 
3. Application hands person A a code (IP+port?) and begins listening. 
4. Person B clicks "join" and types in code. 
5. Person B's computer sees Person A's computer and they connect. Person A accepts connection. 

は、私は本当によくこれを理解したことがありません。これが悪い質問であれば私を許してください。

答えて

0

あなたのシナリオでは、人物AのPCはサーバーとして動作し、人物Bはクライアントとして動作します。たとえそれが一時的なものであっても、Aがであるということは、接続のためにを聞くことは、それがサーバーとして機能していることを意味します。

+0

大丈夫です。したがって、外部IPを見つけてポートxxxxでリッスンし、コードIP:portを送信すれば、クライアントが正しく処理していれば異論はありません。 –

+0

AとBがどこにあるかによって、さらに検討する必要があります。 AとBが同じネットワーク上にある場合、AはローカルIPを宣伝するだけです。しかし、同じネットワーク上になく、NAT変換が行われている場合(AとBの両方に外部インターネットIPがある場合)、後でサーバーが必要になることがあります。静的で事前に知っていない限り、サーバなしで外部IPを取得する簡単な方法はありません。 – arc

+0

私はちょうどあなたのIPをエコーするサーバを作るだろうと思う。なぜ公式なIP検索ツールがないのですか? –

0

定義上、一方の側は接続を開始しなければならない(すなわち、接続要求を発行する)。つまり、もう一方の側では、接続を受信するために開いているサーバーソケットが必要です。クライアントとサーバーの両方の機能を実装し、どちらのユーザーが接続を開始するかに応じて適切な役割(サーバーまたはクライアント)をとることで、両方で同じコードを使用できます。

関連する問題