TCP CLOSE_WAIT состояние .. & новое соединение - PullRequest
0 голосов
/ 12 января 2012

У меня есть сервер на хорошо известном порте TCP, к которому подключена группа клиентов.Клиенты используют неблокирующую опцию для подключения к серверу.

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

  • , когда существующее соединение находится в CLOSE_WAIT, что мешает установить новое соединение?
  • Почему блокировка соединения, даже если установлен неблокирующий параметр?

Это видно в ядре Linux 2.6.3x ..

Ответы [ 2 ]

1 голос
/ 12 января 2012

Звучит как ошибка в клиенте.Если вы установили неблокирование сокета и затем вызвали connect, то нет причины, по которой вызов connect должен блокироваться.Можете ли вы вставить клиентский код, который создает сокет, устанавливает его без блокировки и вызывает connect?Кроме того, вы уверены, что он заблокирован в самом вызове connect?

0 голосов
/ 12 января 2012

Я считаю, что на ваш вопрос достаточно точно дан ответ здесь и связан с SO_REUSEADDR. Другой ответ на вопрос о Использование SO_REUSEADDR - Что происходит с ранее открытым сокетом? также имеет значение.

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