Если ServerSocket принимает соединение, он продолжает ждать дальнейших запросов? - PullRequest
0 голосов
/ 22 декабря 2010

я использую ServerSocket (8080,1, InetAddress.getByName ( "127.0.0.1"))

Теперь в методе accept я получаю Socket от SS. У меня вопрос, как только я получу Socket и продолжу обработку, если до завершения обработки поступит другой запрос, примет ли ServerSocket этот запрос?

Обновление: у меня есть цикл while, как в ответе ниже, который принимает соединение. Я сомневаюсь в том, что этот экземпляр будет создан, если я продолжу обработку моего запроса, и если поступит другой запрос на подключение, будет ли он принят?

Ответы [ 3 ]

2 голосов
/ 22 декабря 2010

Он будет в состоянии ожидания, пока вы не позвоните accept снова. Если поступит несколько запросов, то до определенного числа будет оставаться в очереди до тех пор, пока вы accept. Это ограничение - размер очереди серверного сокета.

2 голосов
/ 22 декабря 2010

Поскольку вы создали этот ServerSocket с резервом 1 , может быть одновременно только одно необработанное (не accept() ed) соединение. Все дополнительные попытки подключения будут отклонены. Другими словами, параметр backlog указывает размер очереди, в которой хранятся соединения, пока они не будут приняты вашей программой.

2 голосов
/ 22 декабря 2010

Он будет принимать запросы только при повторном вызове метода accept, поэтому если вы хотите принять несколько соединений, у вас может быть поток, который просто вращается, вызывая метод accept, например:

while(!stop)
{
    socket.accept();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...