Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как узнать о разрыве связи с узлом? 
:(
    Опции темы
GolIy
Дата 26.9.2008, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: нет
Всего: 8



Нужно использовать бесконечный пинг-понг. Если пинг понг остановился, то связь разорвалась.
PM MAIL   Вверх
Rickert
Дата 26.9.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



GolIy, с опред. интервалом (в одну секунду - классика), отправляем пакет, если на него не пришёл опред. ответ - связь разорвана. Эдакий KEEPALIVE ручной сборки.

Это сообщение отредактировал(а) Rickert - 26.9.2008, 10:47


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.