码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-11-09 12:59:41      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:qt   qtcpsocket检测网络状态   

使用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资源全力发送数据包(这个不是想要的,只能两害取其轻了)。

本文出自 “太阳真圆” 博客,请务必保留此出处http://xuedengfeng.blog.51cto.com/7132939/1870947

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

标签:qt   qtcpsocket检测网络状态   

原文地址:http://xuedengfeng.blog.51cto.com/7132939/1870947

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!