2

宣言があります

public ServerSocket(int port,
                    int backlog)
             throws IOException

バックログは、着信接続の最大キュー長として識別されます。キューがいっぱいのときに接続指示が到着すると、接続は拒否されます。

バックログが10に設定されているとしましょう。

これは、クライアントが 10ServerSocketを超えないことを意味しますか?accept

に続く:

    while (serverShouldStillBeRunning) {
        Socket sock = clientSocket.accept();
        js.new Worker(sock).start();
    }

の場合のみバックログ数が減りsock.close()ます。これは正しいです?

ソケットが現在処理している開いている接続の数を知る方法はありますか (つまり、ソケットがあきらめて新しい接続を拒否し始めるポイントにどれだけ近いか)

4

1 に答える 1

2

バックログは、処理待ちの接続のキューを表します。

すると.accept()、これらの接続の 1 つが処理され、キューに入れられなくなったため、バックログが 1 つ減ります。

于 2012-04-25T19:19:45.107 に答える