По ServerSocket требуется разъяснение

У нас есть декларация

public ServerSocket(int port,
                    int backlog)
             throws IOException

Где отставание определяется как максимальная длина очереди для входящего соединения. Если индикация соединения поступает, когда очередь заполнена, соединение отклоняется.

Допустим, отставание установлено на 10.

Означает ли это, что ServerSocket будет accept не более 10 клиентов?

С последующим:

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

Количество невыполненных работ уменьшится только тогда, когда sock.close(). Это верно?

Есть ли способ узнать, сколько открытых соединений в настоящее время обрабатывает сокет (другими словами, насколько он близок к тому моменту, когда он сдается и начинает отклонять новые соединения)


person James Raitsev    schedule 25.04.2012    source источник


Ответы (1)


backlog представляет собой очередь соединений, ожидающих обработки.

Когда вы .accept(), одно из этих подключений было обработано и больше не находится в очереди, поэтому отставание уменьшается на единицу.

person Sam DeHaan    schedule 25.04.2012