ZBLOG

两个网卡就有两个MAC地址是吗

是的,每个物理网卡(网络接口)都有独立的MAC地址。根据您的输出:

关键结论:

  1. 多个网卡 = 多个MAC

    • 每个物理网卡(包括虚拟网卡)都有全球唯一的MAC地址
    • 示例中:
      • 以太网接口有有效MAC:18:C0:4D:77:D8:CE
      • Loopback是虚拟接口,无MAC(正常现象)
  2. 典型场景举例

    设备                         MAC地址
    ------------------------- --------------------------
    有线网卡 (eth0)           00:11:22:33:44:55  
    无线网卡 (wlan0)           AA:BB:CC:DD:EE:FF
    虚拟机虚拟网卡 (vnet0)     52:54:00:XX:XX:XX
    Loopback                  无 (永远是空)
    

您代码中的处理建议:

1. 获取所有MAC地址(调试用)

foreach (const QNetworkInterface &interface, QNetworkInterface::allInterfaces()) {
    qDebug() << "Interface:" << interface.name() 
             << "| MAC:" << interface.hardwareAddress();
}

2. 精确匹配目标IP对应的MAC(生产代码)

QString GetmacAddressByIP(const QString &targetIP) {
    foreach (const QNetworkInterface &interface, QNetworkInterface::allInterfaces()) {
        foreach (const QNetworkAddressEntry &entry, interface.addressEntries()) {
            if (entry.ip().toString() == targetIP) { // 严格匹配IP
                return interface.hardwareAddress();
            }
        }
    }
    return "";
}

3. Windows/Linux差异注意:

  • Windows:接口名可能是”以太网”、”本地连接”
  • Linux:接口名通常是”eth0”、”ens33”、”wlp2s0”

特殊案例说明:

场景 MAC地址表现
VPN虚拟接口 可能有临时生成的虚拟MAC
Docker/K8s虚拟网络 通常以02:42:开头
NIC绑定(Teaming) 显示为绑定后的统一MAC

如果仍有问题,建议先运行方法1的调试代码确认所有接口信息。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=8013

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?