Russian Qt Forum
Май 17, 2024, 23:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTcpSocket проблема с timeout.  (Прочитано 5323 раз)
altVis
Гость
« : Апрель 25, 2008, 08:37 »

День добрый!
Возникла проблема с отключением после timeout.
Обычно после 10-11 часов работы перестают приходить подтверждения от сервера.
Программа просто не оповещается никак, что соеднинение разорвано, продолжает слать данные( не получая на них ответа ack ).
/proc/sys/net/ipv4/tcp_keepalive_probes значение 9, и ровно после 9 попыток передачи пакета и не получив на него подтверждения ack, сервер меня отключает, но программа продолжает думать, что соединение всё ещё установленно.
Каждую минуту отсылается keep-alive пакет, реализованный на протоколе прикладного уровня.
Можно ли как-то среагировать на timeout, получить сигнал disconnect?
Любые предположения очень важны, т.к. сами понимаете, что проблема серъёзная.
Qt 4.3.3
Спасибо!
Записан
Вячеслав
Гость
« Ответ #1 : Апрель 25, 2008, 21:43 »

А чуть подробнее - какая ось ?
У меня щаз на прогоне стоит платка с микроконтролером - каждые 5 секунд выдираеться статистика работы через tcp.... Неделю уже проработал ....
PS клиенты на Дебиане и форточках ......
PPS неоднократно выдирали сетевой кабель - Мат на таймаут -> дисконнект -> реконнект по таймеру -> летим дальше Подмигивающий
Записан
altVis
Гость
« Ответ #2 : Апрель 25, 2008, 22:32 »

gentoo

Хочу зацепиться за keep alive пакеты, пробую получить размер записываемых данных, т.е. socket->write(keepalivenotification) == 0 или -1, но возвращает полный размер, может как-то возможно зацепиться вручную за ответный ack?


На крайний случай думаю ипсользовать системные вызовы, но номер дескриптора сокета возвращается, как -1 значение.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.086 секунд. Запросов: 20.