2008-12-15 6 views
0

Скажем, я принял() подключение к моему серверу (которое работает в Solaris), и клиент закрыл соединение. Каково состояние сокета (в категориях netstat) сокета на стороне сервера, прежде чем я закрою() его на стороне сервера? Это BOUND?Что такое состояние сокета TCP после удаленного закрытия?

ответ

-1

Я думаю, TIME_WAIT.

Вы можете проверить это с помощью «netstat» в Linux, не знаете, как это сделать на Solaris.

+0

Нет, TIME_WAIT является _after_ socket закрыт() на локальном конце. Я спросил о состоянии перед закрытием() дескриптора. – tadeusz 2008-12-15 10:29:59

1

В этой ситуации сокет на клиенте будет находиться в TIME_WAIT, а сокет на сервере будет проходить через CLOSE_WAIT и быстро переместится в ЗАКРЫТО, чтобы вы не могли его поймать в netstat, прежде чем он исчезнет из списка в целом ,

0

Это должно быть CLOSE_WAIT с конца, который intiates FIN идет к TIME_WAIT --->CLOSED первый.

В этом заключается именно тот, который инициирует первый. Таким образом, сервер перейдет на CLOSE_WAIT.

0

CLOSE_WAIT

вы можете проверить:

пс auxf

Lsof -a -p [server_process_id]

вы получите: носок 0,8

состояние 8 : TCP_CLOSE