Java のソケットに関するいくつかのチュートリアルを読みましたが、ServerSocket クラスの使用方法について、例によって説明が異なることがわかりました。
たとえば、次の 2 つの異なる実装があります。
Socket s = serverSocket.accept();
//using s
と
while(true)
{
Socket s = serverSocket.accept();
}
これら2つのケースの違いは何ですか?
最初の接続は 1 つの接続のみを受け入れますが、2 番目の接続はさらに多くの接続を受け入れ続けます (到達するたびにSocket s = serverSocket.accept();
) 。
ドキュメントから:
このソケットへの接続をリッスンし、それを受け入れます。メソッドは、接続が確立されるまでブロックします。
最初の例では、1 つの接続のみで作業しています。2 番目の例では、手動で停止するまで無制限の接続を使用しています ( break
) 。
2 番目の例では、明らかにaccept
接続が永久に保持されます。