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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Явно ограничить время поытки подключения к Серверу  (Прочитано 2752 раз)
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« : Сентябрь 26, 2011, 12:18 »

QT3.3.3
Как явно указать ограничение для  команды

socket->connectToHost(ip,port);

сколько времени ждать ответа от Сервера?
Адрес может не существовать, Сервер может не работать...
По умолчанию стучит довольно долго.
Записан

Как мало времени и как много нужно узнать
Vass
Гость
« Ответ #1 : Сентябрь 26, 2011, 14:08 »

Запускайте таймер сразу после этой команды, на его тригерр вешайте отказ от подключения или переподключение, на сигнал connected сокета вешайте отключение таймера.
Я думаю как-то так
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Сентябрь 26, 2011, 22:52 »

Код:
socket->connectToHost(ip,port);
QDateTime finishTime = QDateTime::currentDateTime();
QTime time;
time.start();
LockUserInterface();
while ( ( time.elapsed() < timeout ) && ( ( socket->state() = QSocket::HostLookup ) || ( socket->state() = QSocket::Connecting )
{
    QApplication::processEvents( 100 );
}
UnlockUserInterface();
if ( socket->state() = QSocket::Connected )
{
    // …
}
else
{
    socket->close();
    // …
}
Код принципиально не проверялся на работоспособность.
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #3 : Сентябрь 27, 2011, 08:56 »

Я и сделал по таймеру.
Но, надеялся, что есть какая то недокументированная возможность указать методу connect ограничение на время дозвона Злой
В 4-м QT это реализовано ведь...
Записан

Как мало времени и как много нужно узнать
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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