网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

QT使用QTcpSocket来检测ip设备的网络状态

使用QT中 QTcpSocket来检测设备的网络状态:

创新互联公司专业为企业提供南漳网站建设、南漳做网站、南漳网站设计、南漳网站制作等企业网站建设、网页设计与制作、南漳企业网站模板建站服务,十年南漳做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

函数返回true,设备网络状态正常,返回false,设备网络异常。

bool TcpIpSocket::sendATcpSocketToIp(QString ip){
    m_ipAdress = ip;
    abort();
    connectToHost(m_ipAdress, port);
    //等待timeout时间,如果仍然不通,则异常
    return waitForConnected(timeout);
}

要实现实时一直检测,使用while:

    runWhile = true;    runBreak = false;
    bool retPing;
    while(runWhile){
        retPing = m_senderAgent.sendATcpSocketToIp(ipAdress);
        if(retPing == true){
            //ping 成功,目标ip网络正常,发送commandSuccessed
            emit commandSuccessed();
        }else{
            //ping 失败,目标ip网络不正常,发送commandFailed
            emit commandFailed();
        }

        sleep(1000);    // sleep 1s

        if(runBreak){
            break;
        }
    }//end of while

       运行中还存在问题的是,假如使用另外一个函数,在某个时刻触发,使runBreak = true ,或者 runWhile = false,但是这个while仍然一直循环执行,不会跳出,但是当注释掉sleep(1000)后,while就会跳出。但是注释掉sleep(1000)后,该while会占用大量cpu资源全力发送数据包(这个不是想要的,只能两害取其轻了)。


分享标题:QT使用QTcpSocket来检测ip设备的网络状态
浏览地址:http://bjjierui.cn/article/jhsopo.html

其他资讯