• 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);
    }

  • 相关阅读:
    ubuntu 查看进程,查看服务
    ubuntu16.04下配置静态ip
    php监听客户端连接状态
    Excel有用的宏
    openfire插件开发1
    linux ps命令
    转:linux下面/usr/local和opt目录有何区别
    linux 开机自启动软件(包含xampp方法)
    转:java两个jre目录和三个lib目录
    linux PATH环境变量
  • 原文地址:https://www.cnblogs.com/gx1069/p/6832078.html
Copyright © 2020-2023  润新知