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设备的网络状态
浏览路径:https://www.cdcxhl.com/article30/jhsopo.html

成都网站建设公司_创新互联,为您提供营销型网站建设做网站品牌网站设计动态网站定制开发品牌网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计