powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / QT сделать на переподключение
6 сообщений из 6, страница 1 из 1
QT сделать на переподключение
    #38994255
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как сделать задержку так чтобы остальные события продолжали работать. т.е. если соединение не удалось(сервер выключен), то необходимо через пару секунд повторить соединение, при этом если в этот промежуток была дана команда закрыть приложение, то оно закрылось.
у меня сейчас форма закрывается, а в процессах все равно висит.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
 void doConnect(){
        if(!is_connected){
            serv_socket=new QTcpSocket(this);
            connect(serv_socket,SIGNAL(connected()),this,SLOT(connected()));
            connect(serv_socket,SIGNAL(disconnected()),this,SLOT(disconnected()));
            connect(serv_socket,SIGNAL(bytesWritten(quint64)),this,SLOT(bytesWritten(quint64)));
            connect(serv_socket,SIGNAL(readyRead()),this,SLOT(readyRead()));
            qDebug()<<"connecting...";
            serv_socket->connectToHost(serv_ip,port);
            if(!serv_socket->waitForConnected(5000))
               {
                   qDebug() << "Error: " << serv_socket->errorString();
                   QTime time;
                    //QThread::sleep(5000);
                   for(;time.elapsed()<10000;){
                       qApp->processEvents();
                   }
                   if(!to_close){
                        doConnect();
                   }
                   else{
                       qApp->quit();
                   }
               }
            }
        }

};
...
Рейтинг: 0 / 0
QT сделать на переподключение
    #38994256
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежник,

а нет закрывается только не сразу после того как кнопку закрыть нажал
...
Рейтинг: 0 / 0
QT сделать на переподключение
    #38994260
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежниккак сделать задержку так чтобы остальные события продолжали работать. т.е. если соединение не удалось(сервер выключен), то необходимо через пару секунд повторить соединение, при этом если в этот промежуток была дана команда закрыть приложение, то оно закрылось.
у меня сейчас форма закрывается, а в процессах все равно висит.


Ну и фантазии у тебя...

Можно конечно сделать соединение с сервером в виде фонового потока, но мне кажется просто надо быть проще.
...
Рейтинг: 0 / 0
QT сделать на переподключение
    #38994272
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежник, ну ты наворотил )
я бы doConnect() убрал совсем
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
void send() // вызываем раз в 1 сек 
{
    if( serv_socket->waitForConnected(-1) )
    {
        // отправка сообщения
        ...
    }
    else
    {
        // подключение
        static int error_counter;
        if( error_counter )
        {
            // ожидаем подключение
            --error_counter;
            
            if( !error_counter ) выводим_ошибку();
        }
        else
        {
            // подключаемся
            serv_socket->connectToHost(serv_ip,port);
            error_counter = 5; // ожидаем подключение 5 сек ( вызов send() раз в 1 сек ) 
        }
    }
}

...
Рейтинг: 0 / 0
QT сделать на переподключение
    #38994342
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_SlaКартежник, ну ты наворотил )
я бы doConnect() убрал совсем
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
void send() // вызываем раз в 1 сек 
{
    if( serv_socket->waitForConnected(-1) )
    {
        // отправка сообщения
        ...
    }
    else
    {
        // подключение
        static int error_counter;
        if( error_counter )
        {
            // ожидаем подключение
            --error_counter;
            
            if( !error_counter ) выводим_ошибку();
        }
        else
        {
            // подключаемся
            serv_socket->connectToHost(serv_ip,port);
            error_counter = 5; // ожидаем подключение 5 сек ( вызов send() раз в 1 сек ) 
        }
    }
}



а если уже подключен каждую секунду будет продолжать вызывать send()?
...
Рейтинг: 0 / 0
QT сделать на переподключение
    #38994343
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а понял, просто потом таймер отключить
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / QT сделать на переподключение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]