2013-12-05 7 views
0

В соответствии с протоколом tcp, когда происходит завершение соединения tcp, разъем tcp инициатора переходит в следующие состояния FIN-WAIT-1, FIN-WAIT-2, TIME-WAIT, прежде чем соединение будет полностью закрыто, а разъем tcp другого конца перейдите в следующие состояния: ЗАКРЫТЬ-ЖДАТЬ, ПОСЛЕДНИЙ-АКК, ЗАКРЫТЬ, прежде чем соединение будет полностью закрыто. На нашем сервере приложений инициируется прекращение соединения, которое приводит к сокетам на стороне сервера в состоянии FIN_WAIT2 бесконечно, из-за того, что эти соединения, сделанные клиентами, удаляются сервером из-за недоступности портов. Является ли прекращение подключения, инициированное клиентами, выгодным или нет?Завершение соединения соединения Tcp сервером является ликорабельным?

ответ

1

Инициирование терминации с клиента может быть благоприятным, поскольку оно не позволяет серверу перейти в TIME_WAIT. Ваша проблема другая.

Сокет в FIN_WAIT2 «полуоткрыт»: клиентская сторона все еще может отправлять данные, и вы можете их прочитать, но вы ничего не можете отправить. Сокет останется в этом состоянии до тех пор, пока клиент не закроет сокет, или сервер не сбросит соединение.

Так звучит так, что ваши клиенты просто не закрывают свои стороны соединений.

Смежные вопросы