首页 > 其他分享 >获取本机ip地址

获取本机ip地址

时间:2022-08-22 15:11:34浏览次数:80  
标签:00 ip 56 50 地址 C0 本机 nets

有时候需要用到ip地址,但是有时候有虚拟机,需要剔除。

转自:https://blog.csdn.net/qq_38008379/article/details/103683946

获取本地IP地址( 排除虚拟机IP地址和链路IP地址 ):

 1   QString  Window::getHostAddress()  
 2 {
 3     QString hostAddr = "";
 4     QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();// 获取所有网络接口列表
 5     int nCnt = nets.count();
 6  
 7     //排除虚拟机地址
 8     for(int i = 0; i < nCnt; i ++) {
 9         if (  nets[i].hardwareAddress() == "00:50:56:C0:00:01" ) {
10             nets.removeAt( i );
11             break;
12         }
13     }
14     nCnt = nets.count();
15     for(int i = 0; i < nCnt; i ++) {
16         if (  nets[i].hardwareAddress() == "00:50:56:C0:00:08" ) {
17             nets.removeAt( i );
18             break;
19         }
20     }
21  
22     foreach(QNetworkInterface interface,nets) {
23         //排除不在活动的IP
24         if( interface.flags().testFlag(QNetworkInterface::IsUp) && interface.flags().testFlag(QNetworkInterface::IsRunning ) ){
25             QList<QNetworkAddressEntry> entryList = interface.addressEntries();
26             foreach(QNetworkAddressEntry entry,entryList) {
27                 QHostAddress hostAddress = entry.ip();
28  
29                 if ( hostAddr.isEmpty() ) {
30                     //排除本地地址
31                     if ( hostAddress != QHostAddress::LocalHost && hostAddress.toIPv4Address() ) {
32                         quint32 nIPV4 = hostAddress.toIPv4Address();
33  
34                         //本地链路地址
35                         quint32 nMinRange = QHostAddress("169.254.1.0").toIPv4Address();
36                         quint32 nMaxRange = QHostAddress("169.254.254.255").toIPv4Address();
37                         //排除链路地址
38                         if ( ( nIPV4 >= nMinRange ) && ( nIPV4 <= nMaxRange ) )
39                             continue;
40                         qDebug() << hostAddress;
41                         hostAddr = hostAddress.toString();
42                         return hostAddr;
43                     }
44                 }
45  
46             }
47         }
48     }
49     return QHostAddress::Null;
50 }

获取本地Mac地址( 排除虚拟机Mac地址 )

VM 虚拟机地址的Mac固定为 00:50:56:C0:00:01 和 00:50:56:C0:00:08:

QString Window::getHostMacAddress()
{
    qDebug() << "getHostMacAddress";
    QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();// 获取所有网络接口列表
    int nCnt = nets.count();
 
    QString strMacAddr = "";
    for(int i = 0; i < nCnt; i ++)
    {
        //00:50:56:C0:00:01 00:50:56:C0:00:08虚拟机地址
        // 如果此网络接口被激活并且正在运行并且不是回环地址,则就是我们需要找的Mac地址
        if(nets[i].flags().testFlag(QNetworkInterface::IsUp) && nets[i].flags().testFlag(QNetworkInterface::IsRunning)
                && !nets[i].flags().testFlag(QNetworkInterface::IsLoopBack) &&  nets[i].hardwareAddress() != "00:50:56:C0:00:01" && nets[i].hardwareAddress() != "00:50:56:C0:00:08" )
        {
            strMacAddr = nets[i].hardwareAddress();
            break;
        }
    }
    return strMacAddr;
}

 

标签:00,ip,56,50,地址,C0,本机,nets
From: https://www.cnblogs.com/warmlight/p/16612859.html

相关文章

  • 关于使用Git不能拉取GitLab https项目地址的问题
    现在使用Git命令直接clonehttps://xxx项目时候会报错“没有权限拉取代码”,其实我们需要在“UserSettings ---》AccessTokens“界面新增一个 accesstoken就好了,......
  • [2015年NOIP提高组] 跳石头
     [2015年NOIP提高组]跳石头思路:本题是最大化最小值问题,考虑二分答案解决。先写函数确定距离,然后看要搬的石头数满足题意吗。距离确定了,把间距小于确定距离的需要全部搬......
  • go 地址对齐保证
    unsafe标准库包funcAlignof(variableArbitraryType)uintptr。此函数用来取得一个值在内存中的地址对齐保证(addressalignmentguarantee)。注意,同一个类型的值做为结......
  • ArcGIS API for JavaScript Editor Widget 选中多个要素不显示名称
    背景 最近升级时遇到了之前碰到的问题,但是忘记解决方法了。又重新对比了旧代码才找到,所以记录下。FeatureLayer的构建方式不是url,而是用的source环境 Vu......
  • codesys作为本机ethernet/ip适配器
    摘要:codesys作为本机EIP适配器,也就是说在Codesys中自己配置变量,然后导出为EDS文件,其它设备导入这个EDS文件,就可以和codesys通过Ethernet/IP的方式通信。以欧姆龙PLCCP1H......
  • 【JavaScript】各种手写题汇总复习
    防抖functionthrottle(fun,time){lettimer=nullreturn()=>{if(timer){return}fun()timer=setTimeout(()=>{time......
  • 您备案的网站实际解析IP地址与备案IP地址不一致
    您备案的网站实际解析IP地址与备案IP地址不一致。请您将网站解析IP地址与备案IP地址保持一致解决办法发布时间:2022-05-12 来源:本站原创 作者:野狼SEO团队 阅读:653次......
  • ESP32环境搭建-Eclipse
    一、具体步骤1、第一步下载相关软件.Python3.8以上Gitesp-idfesp-idf-tools2、安装依赖软件3、安装tool4、测试二、搭建环境安装Python33.8以上版本,Pyt......
  • TCP-IP详解 卷二:实现 pdf
    高清文字版 下载链接:https://pan.baidu.com/s/1omp-GVZIj5e5imcn5CnE2w点击这里获取提取码。 ......
  • TCP-IP详解卷三 pdf
    TCP-IP详解卷三:TCP事务协议HTTPNNTP和UNIX域协议高清文字版下载链接:https://pan.baidu.com/s/1Ic7iS5yS3ZYIMGtb8FwaVQ点击这里获取提取码。 ......