Russian Qt Forum

Qt => Работа с сетью => Тема начата: Примерный ученик от Сентябрь 26, 2011, 12:18



Название: Явно ограничить время поытки подключения к Серверу
Отправлено: Примерный ученик от Сентябрь 26, 2011, 12:18
QT3.3.3
Как явно указать ограничение для  команды

socket->connectToHost(ip,port);

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


Название: Re: Явно ограничить время поытки подключения к Серверу
Отправлено: Vass от Сентябрь 26, 2011, 14:08
Запускайте таймер сразу после этой команды, на его тригерр вешайте отказ от подключения или переподключение, на сигнал connected сокета вешайте отключение таймера.
Я думаю как-то так


Название: Re: Явно ограничить время поытки подключения к Серверу
Отправлено: LisandreL от Сентябрь 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();
    // …
}
Код принципиально не проверялся на работоспособность.


Название: Re: Явно ограничить время поытки подключения к Серверу
Отправлено: Примерный ученик от Сентябрь 27, 2011, 08:56
Я и сделал по таймеру.
Но, надеялся, что есть какая то недокументированная возможность указать методу connect ограничение на время дозвона >:(
В 4-м QT это реализовано ведь...