Название: QTcpSocket проблема с timeout. Отправлено: 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 Спасибо! Название: Re: QTcpSocket проблема с timeout. Отправлено: Вячеслав от Апрель 25, 2008, 21:43 А чуть подробнее - какая ось ?
У меня щаз на прогоне стоит платка с микроконтролером - каждые 5 секунд выдираеться статистика работы через tcp.... Неделю уже проработал .... PS клиенты на Дебиане и форточках ...... PPS неоднократно выдирали сетевой кабель - Мат на таймаут -> дисконнект -> реконнект по таймеру -> летим дальше ;) Название: Re: QTcpSocket проблема с timeout. Отправлено: altVis от Апрель 25, 2008, 22:32 gentoo
Хочу зацепиться за keep alive пакеты, пробую получить размер записываемых данных, т.е. socket->write(keepalivenotification) == 0 или -1, но возвращает полный размер, может как-то возможно зацепиться вручную за ответный ack? На крайний случай думаю ипсользовать системные вызовы, но номер дескриптора сокета возвращается, как -1 значение. |