LINUX.ORG.RU

Увеличить время таймаута подключения в QTcpSocket::connectToHost

 


0

2

Как увеличить время таймаута на подключение в QTcpSocket::connectToHost ?
На недоступный хост в своей сети он пытается только около 6 секунд, мне нужно больше
Если проверить тотже хост через telnet, то получается 3 сек
Чем определяется это время ?
Хорошим решением наверно была бы настройка сети, но не могу найти этот параметр

★★★★★

На недоступный хост в своей сети он пытается только около 6 секунд, мне нужно больше

И зачем тебе больше для недоступного хоста?

Pavval ★★★★★
()
Ответ на: комментарий от XMs

должен дергать, но я же не полезу внутрь

x905 ★★★★★
() автор топика
Ответ на: комментарий от baldman88

нет, я не жду сам, я выдаю команду и жду события и приходит ошибка

x905 ★★★★★
() автор топика
Ответ на: комментарий от Pavval

И зачем тебе больше для недоступного хоста?

когда хостов 200 (виртуалки), то к некоторым коннект не успевает пройти
на реальной сети такие задержки могут быть, поэтому нужно больше времени чем 6 сек

x905 ★★★★★
() автор топика

Попробуйте QAbstractSocket::socketDescriptor, setsockopt, SO_RCVTIMEO/SO_SNDTIMEO

  QAbstractSocket * socket = new QTcpSocket();
  ...
  struct timeval timeout;      
  timeout.tv_sec = 20;
  timeout.tv_usec = 0;

  setsockopt (socket->socketDescriptor(), SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout) );
  setsockopt (socket->socketDescriptor(), SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout) );
tekilla
()
Ответ на: комментарий от tekilla

идея ясна, но почему то не работает
пробую на примере qt-everywhere-opensource-src-5.6.0/qtbase/examples/network/fortuneclient

параметры сокета устанавливаются успешно, но событие об ошибке возникает опять через 6 сек, при этом установленные значения имеются в дескрипторе сокета (т.е. они не сброшены)

может параметры SO_RCVTIMEO и SO_SNDTIMEO действуют только на подключенном сокете ?

x905 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.