![]() |
разрыв соединения ТСР
Добрый день, товарищи!
Пилю ТСР сервер-клиентскую систему, сервер по привычке пишу на С в среде Debian, клиент под Вин на С#, но непонятные моменты если бывают тоже отлаживаю под Linux. Подскажите, с ходу понять не могу, человеческое решение вопроса. Поднимаю ТСР сокет, слушаю порт через listen(), принимаю соединение через accept(), и далее слушаю порт через recv, отправляю через send, ну в общем как и описано во всех самоучителях, в неблокирующем режиме с применением select. Так вот, вопрос такой, а если клиент дал команду на закрытие сокета, как сервер может данный факт отследить? Именно когда клиент закрыл соединение явно, а не произошло тихое падение сети. Т.е что я должен прослушивать в цикле помимо recv чтобы определить отключение клиента? (то что при падении сети нужно закрывать сокет по таймауту и иначе этого не отследить - уже знаю). На примере утилиты Essential net tools слушающей порт ТСР в режиме RAW я точно знаю, что факт закрытия порта клиентом может быть отслежен сервером абсолютно точно, если только клиент явно закрыл порт... |
Время: 17:54. |
Время: 17:54.
© OSzone.net 2001-