zoukankan      html  css  js  c++  java
  • Qt设置阻塞式网络请求,和超时处理

    QNetworkProxy proxy;
    proxy.setType(QNetworkProxy::Socks5Proxy);
    proxy.setHostName(LOCAPROXYIP);
    proxy.setPort(LOCAPROXYPORT);
    proxy.setUser(PROXYUSERNAME);
    proxy.setPassword(PROXYPWD);
    QTimer timer;
    timer.setInterval(CHECKPROXYNETWORKTIMES);
    timer.setSingleShot(true);
    QNetworkAccessManager manager;
    manager.setProxy(proxy);
    QNetworkRequest request;
    request.setUrl(QUrl(CHECKREMOTEURL));
    QNetworkReply *pReply = manager.get(request);
    QEventLoop loop;
    QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
    QObject::connect(pReply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
    timer.start();
    loop.exec();
    if (timer.isActive()) {
    timer.stop();
    if (pReply->error() != QNetworkReply::NoError) { //访问异常
    //CLIENT_APP->commMessageBoxInt(CLIENT_APP->_listPollIndex);
    CLIENT_APP->startShadowProxyApp();
    Sleep(CHECKTHREADTIMES);
    }
    else
    {
    //CLIENT_APP->commMessageBoxInt(CLIENT_APP->_listPollIndex);
    Sleep(CHECKPROXYNETWORKSUCCTIMES);//成功了 设置延迟
    }
    }
    else {//超时
    //CLIENT_APP->commMessageBoxInt(CLIENT_APP->_listPollIndex);
    QObject::disconnect(pReply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
    pReply->abort();
    pReply->deleteLater();
    CLIENT_APP->startShadowProxyApp();
    Sleep(CHECKTHREADTIMES);
    }

  • 相关阅读:
    Asp.Net+Oracle+BootStrap+Jquery
    UML类图几种关系的总结
    PHP对象在内存堆栈中的分配
    php sprintf 详解
    微信错误代码45047:客服消息只能发送20条/个用户
    php利用array_search与array_column实现二维数组查找
    mvc 详解
    php中++i 与 i++ 的区分详解
    Git 别名多个命令 超实用
    php 对象继承
  • 原文地址:https://www.cnblogs.com/gx1069/p/6832078.html
Copyright © 2011-2022 走看看