4

これは、より一般的なソケットの質問です。Javaでは、ServerSocketを特定のポート(たとえば4444)にバインドしている場合、接続要求をリッスンしていることを理解しています。accept()メソッドは、接続要求が受信され、クライアントと通信するための新しいソケットを返すまでブロックします。返されたソケットのリモートエンドポイントは、クライアントのIPアドレスとポートです。

ただし、私が混乱しているのは、返されたSocketのローカルポートが、要求をリッスンしているServerSocketのポート番号(この場合は4444)と同じであるということです。2つのソケットを同じポートにバインドできないと思いましたか?返されたソケットはサーバー上の別のポートではないでしょうか?

4

2 に答える 2

6

2つのServerSocketが同じIPアドレスとポートをリッスンすることはできません。2つのServerSocketが異なるIPと同じポートでリッスンする可能性があります。

2つのソケットに、ローカルANDリモートのIPとポートを同じにすることはできません。ローカルポートは、リモートIPとポートが異なる場合、多くのソケットで同じにすることができます。

于 2012-08-10T16:37:09.497 に答える
0

複数のソケットを使用して特定のIP:ポートの組み合わせをリッスンすることはできませんが、同じ組み合わせに対して複数の受け入れられた接続が存在する可能性があります。

接続は、ローカルIPアドレスとポートおよびリモートIPアドレスとポートの組み合わせによって識別されます。

于 2012-08-10T16:38:32.497 に答える