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

Qt获取本机ip地址

时间:2020-10-31 01:44:27      阅读:22      评论:0      收藏:0      [点我收藏+]

标签:qstring   第一个   跳过   led   qprocess   传输   参考   电脑   项目   

情景:

最近有个项目需要手机可以与PC进行tcp传输文件,PC做server时在我的电脑可以,在其他电脑时手机连接超时。
查看了端口,防火墙等等问题未能解决。最后发现是qt在获取IP地址时获取错了,获取的是第一个而不是正在使用的。

下面是Qt获取本机正在使用的IP地址:

QString strIpAddress;
QProcess cmd_pro ;
QString cmd_str = QString("ipconfig");
cmd_pro.start("cmd.exe", QStringList() << "/c" << cmd_str);
cmd_pro.waitForStarted();
cmd_pro.waitForFinished();
QString result = cmd_pro.readAll();
qDebug() << result;
QString pattern("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");
QRegExp rx(pattern);

int pos = 0;
bool found = false;
while((pos = rx.indexIn(result, pos)) != -1){
    QString tmp = rx.cap(0);
    //跳过子网掩码 eg:255.255.255.0
    if(-1 == tmp.indexOf("255")){
       if(strIpAddress != "" && -1 != tmp.indexOf(strIpAddress.mid(0,strIpAddress.lastIndexOf(".")))){
            found = true;
            break;
        }
        strIpAddress = tmp;
    }
    pos += rx.matchedLength();
}

qDebug()<<"ip: " << strIpAddress;

参考链接:https://blog.csdn.net/JakeLinfly/article/details/96590688

Qt获取本机ip地址

标签:qstring   第一个   跳过   led   qprocess   传输   参考   电脑   项目   

原文地址:https://www.cnblogs.com/tjhd/p/13901198.html

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