Может, сервер поддерживает несколько клиентов с прослушиванием? - PullRequest
0 голосов
/ 12 октября 2011

Я писал простой сервер, просто для удовольствия, и понял, что третий шаг, означающий вызов функции listen(...), принимает два аргумента. Вторым является backlog. Хотя я не до конца понимаю смысл этого аргумента, но думаю, что он ставит клиентов в очередь. Итак, предполагая, что я прав, мне было интересно, как сервер перемещается вверх по очереди, или я действительно должен это реализовать?

Я нашел много примеров в Интернете об этом, но они в основном содержат код. Я хотел бы более теоретическое объяснение. Спасибо!

1 Ответ

0 голосов
/ 12 октября 2011

Да, вы правы - отставание - это предполагаемая очередь возможных соединений (AFAIK игнорируется в Linux)

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

Так что вы можете сделать что-то вроде

listen();
while(int in_socket=accept())
{
    if(in_socket>0)
    // process each client in order they are received
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...