Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Сетевые технологии > Остановка клиента TCP по таймауту.


Автор: OlegIT 29.11.2016, 16:42
Не уверен, что правильно выбрал раздел.
Проблема такая. Отлаживаю стык между модулем на ARM и программой на PC с библиотекой Qt. Связь по изернет, TCP-IP. На ARM-е сервер на PC клиент. Когда я останавливаю сервер для отладки, посмотреть, подумать, клиент на PC разрывает связь по таймауту. Как «сказать» клиенту, что разрывать связь не нужно, жди вечно?

Автор: CompWorm 1.12.2016, 05:32
клиентский код фстудию!
на вскидку - у тебя клиент с блокирующим сокетом, который тупо закрывается по таймауту, типа
socket = new QTcpSocket(this)
...
if(!socket->waitForReadyRead(1000)) // default is 30000
    socket->close();

убедить клиента не закрывать сокет в таком случае не выйдет.
если кода клиента нет - отлаживайся логами.


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Ostanovka-kliyenta-TCP-po-taymautu-id583d865eb4c92c634639b4f2#findElement_E7045_583f8ba30ef42f15c526cdb0_0

Автор: OlegIT 1.12.2016, 14:53
Явного
Код

if(!socket->waitForReadyRead(1000)) // default is 30000
    socket->close();

в коде нет, там слот вызывается из библиотеки когда приходят данные. Ответа от сервера долго нет и аля-улю, закроюсь сам.

Автор: kapbepucm 8.12.2016, 12:50
Цитата(OlegIT @  29.11.2016,  16:42 Найти цитируемый пост)
PC разрывает связь по таймауту
как вы это определяете?

Автор: OlegIT 14.12.2016, 15:24
Цитата(kapbepucm @  8.12.2016,  12:50 Найти цитируемый пост)
как вы это определяете? 

Слот закрытия соединения вызывается.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)