![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
GolIy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Привет.
Есть тсп соединение. Если кто-то, либо клиент, либо серв завершает работу нормальным путём (closesocket, или просто тупо прога закрывается, ось сама что нада отправит другой стороне для дисконекта), то на другой стороне это мы сразу узнаем при вызове какойлибо функции ввода-вывода для сокета. Но если на узле мы закончили работу некорректно ? Например, выключили питание у компа ;) Возможно ли, мгновенно на другой стороне узнать об этом ? Все функции работы с соком есесно не будут давать никакой информации о дисконекте, ибо никаких пакетов которые бы это сказали не было. Есть опция у сокета SO_KEEPALIVE, но она мне не подходит - если её включить она только через 2 часа молчания включит свои алгоритмы для опреления статуса связи, и только черзе 11мин. 15 сек. скажет что связи нет. Можно менять переменную 2 часа - я ставил 3 секунды )) но в любой случае нужно ждать 11м15сек. Меня это не устраивает. Мну нужно мгновенно узнать об этом. Собственно, вопрос реально ли сразу узнать о дисконекте средствами socket api ? Или тут без ICMP не обойтись ? |
|||
|
||||
HappyLife |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: нет Всего: 8 |
Нужно использовать бесконечный пинг-понг. Если пинг понг остановился, то связь разорвалась.
|
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
GolIy, с опред. интервалом (в одну секунду - классика), отправляем пакет, если на него не пришёл опред. ответ - связь разорвана. Эдакий KEEPALIVE ручной сборки.
Это сообщение отредактировал(а) Rickert - 26.9.2008, 10:47 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |