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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> winsock: определить отключение 
:(
    Опции темы
RankoR
  Дата 11.12.2010, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть сокет, нужно быстро определить, подключен ли он в данный момент. В фреймворках вроде Qt, к примеру, есть сигналы onDisconnected, которые умеют быстро сообщать о дисконнекте удаленного хоста. Сейчас же понадобилось написать приложение на C, соответственно, фреймворки использовать нельзя. Как это сделать?
В гугле рабочего кода не нашел =(
PM MAIL WWW ICQ   Вверх
Artemon
Дата 11.12.2010, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



Достоверный способ узнать о разрыве это переодически обмениваться сообщениями (ping)


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
RankoR
Дата 11.12.2010, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну вообще-то отсутствие пинга не говорит об отсутствии связи ;)
PM MAIL WWW ICQ   Вверх
RankoR
Дата 11.12.2010, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хотелось бы максимально достоверный способ - сервер будет очень сильно нагружен, и нужно быстро определять, что клиент отключился.
PM MAIL WWW ICQ   Вверх
Artemon
Дата 11.12.2010, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



Цитата(RankoR @  11.12.2010,  10:03 Найти цитируемый пост)
Ну вообще-то отсутствие пинга не говорит об отсутствии связи ;)


Я под пингом имею ввиду отправку контрольных сообщений между клиентским и серверным сокетом.

НО никак не стандартную утилиту Windows под названием Ping

Это сообщение отредактировал(а) Artemon - 11.12.2010, 11:45


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
RankoR
Дата 11.12.2010, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А я под пингом всегда подразумевал ICMP-echo =)
Дело в том, что отправить "лишний" пакет нельзя - клиент просто не поймет его, и получится ошибочка =(
А если вызывать recv() - он долго не возвращает управление, что не есть хорошо.
PM MAIL WWW ICQ   Вверх
Artemon
Дата 11.12.2010, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



Нужно сделать чтобы клиент понял его.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Олег2005
Дата 16.12.2010, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

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



Используйте опцию TCP_KEEPALIVE
PM MAIL WWW MSN   Вверх
Dem_max
Дата 3.1.2011, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



если recv() вернул 0 то клиент отключился


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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