Привет. Есть тсп соединение. Если кто-то, либо клиент, либо серв завершает работу нормальным путём (closesocket, или просто тупо прога закрывается, ось сама что нада отправит другой стороне для дисконекта), то на другой стороне это мы сразу узнаем при вызове какойлибо функции ввода-вывода для сокета. Но если на узле мы закончили работу некорректно ? Например, выключили питание у компа ;) Возможно ли, мгновенно на другой стороне узнать об этом ? Все функции работы с соком есесно не будут давать никакой информации о дисконекте, ибо никаких пакетов которые бы это сказали не было. Есть опция у сокета SO_KEEPALIVE, но она мне не подходит - если её включить она только через 2 часа молчания включит свои алгоритмы для опреления статуса связи, и только черзе 11мин. 15 сек. скажет что связи нет. Можно менять переменную 2 часа - я ставил 3 секунды )) но в любой случае нужно ждать 11м15сек. Меня это не устраивает. Мну нужно мгновенно узнать об этом. Собственно, вопрос реально ли сразу узнать о дисконекте средствами socket api ? Или тут без ICMP не обойтись ? |