Правила, разрешающие повторное использование локального порта приложением - PullRequest
2 голосов
/ 15 декабря 2011

Для сервера TCP со следующей структурой:

main(){
    socket();
    bind();
    listen();
    while(1){
       accept();
       fork();
       if(child)
          Process;
    }
}

Создает новый сокет для каждого клиента и связывается со всеми клиентами, использующими один и тот же порт.Таким образом, все сокеты связываются с одним и тем же портом.

При чтении кода ядра (2.6.33.5) я натолкнулся на следующие комментарии :TCP-сервер выше, это третье правило, которому он соответствует?

1 Ответ

1 голос
/ 23 декабря 2011

В этой игре 1 плюс N розеток.

1 прослушивающий сокет , который был передан bind() и listen().Только этот сокет связан с портом, который слушает сервер.

2 Все N подключенных сокетов , созданных N 'процессами' клиентов, подключающихся к серверу и возвращаемыхна accept().Эти сокеты служат для связи с клиентами.Такие сокеты не прослушивают в том смысле, в каком прослушивающий сокет делает.

Указанные вами правила применяются только к прослушивающему сокету .

Таким образом, если вы запускаете только один экземпляр вашего сервера, третье правило не применяется , так как оно bind() имеет только один сокет для listen() на порту сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...