QT 请教如何获取有效MAC地址和IP地址(IPV4)

-大漠孤烟- 2014-10-13 11:03:56
在网上这样来获取MAC地址和IP:
QList<QNetworkInterface>list = QNetworkInterface::allInterfaces();

foreach(QNetworkInterface interface, list) //遍历每个网络接口
{
//硬件地址
qDebug() << "HardwareAddress:" << interface.hardwareAddress();

//获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址
QList<QNetworkAddressEntry>entryList = interface.addressEntries();

foreach(QNetworkAddressEntry entry, entryList)//遍历每一个IP地址条目
{
//IP地址
qDebug() << "IP Address: " << entry.ip().toString();
//子网掩码
qDebug() << "Netmask: " << entry.netmask().toString();
//广播地址
qDebug() << "Broadcast: " << entry.broadcast().toString();
}
}
运行的结果是这样的,这是在win7系统下运行的结果
HardwareAddress: "58:91:CF:33:A6:71"
IP Address: "FE80::D0B8:3B91:5BB3:CCA4%13"
Netmask: "FFFF:FFFF:FFFF:FFFF::"
Broadcast: ""
IP Address: "192.168.0.100"
Netmask: "255.255.255.0"
Broadcast: "192.168.0.255"
HardwareAddress: "84:8F:69:D1:FC:42"
IP Address: "FE80::34D5:3E98:C8BD:9A20%12"
Netmask: "FFFF:FFFF:FFFF:FFFF::"
Broadcast: ""
IP Address: "169.254.154.32"
Netmask: ""
Broadcast: ""
HardwareAddress: "58:91:CF:33:A6:75"
IP Address: "FE80::50B7:7B6F:A027:3732%10"
Netmask: "FFFF:FFFF:FFFF:FFFF::"
Broadcast: ""
IP Address: "169.254.55.50"
Netmask: ""
Broadcast: ""
HardwareAddress: "00:50:56:C0:00:01"
IP Address: "FE80::E009:E055:7443:B876%17"
Netmask: "FFFF:FFFF:FFFF:FFFF::"
Broadcast: ""
IP Address: "192.168.24.1"
Netmask: "255.255.255.0"
Broadcast: "192.168.24.255"
HardwareAddress: "00:50:56:C0:00:08"
IP Address: "FE80::C910:AC4A:1562:3F86%18"
Netmask: "FFFF:FFFF:FFFF:FFFF::"
Broadcast: ""
IP Address: "192.168.112.1"
Netmask: "255.255.255.0"
Broadcast: "192.168.112.255"
HardwareAddress: ""
IP Address: "::1"
Netmask: "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"
Broadcast: ""
IP Address: "127.0.0.1"
Netmask: ""
Broadcast: ""
HardwareAddress: "00:00:00:00:00:00:00:E0"
IP Address: "FE80::5EFE:C0A8:64%22"
Netmask: "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"
Broadcast: ""
HardwareAddress: "00:00:00:00:00:00:00:E0"
IP Address: "FE80::5EFE:C0A8:7001%19"
Netmask: "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"
Broadcast: ""
HardwareAddress: "00:00:00:00:00:00:00:E0"
IP Address: "FE80::100:7F:FFFE%14"
Netmask: "FFFF:FFFF:FFFF:FFFF::"
Broadcast: ""
HardwareAddress: "00:00:00:00:00:00:00:E0"
IP Address: "FE80::5EFE:C0A8:1801%21"
Netmask: "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"
Broadcast: ""

问题是,我怎样来提取有效的MAN地址和IP呢,我通过MAC地址扫描器得到第一个MAC地址和IP是有效的,其他的 哪些怎么去屏蔽掉呢。
...全文
1623 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
-大漠孤烟- 2014-10-15
  • 打赏
  • 举报
回复
嗯,那应该怎么获取呢,最好是给出代码来,我现在还是个新手,自己从头写不了的
foruok 2014-10-14
  • 打赏
  • 举报
回复
其他设备你通过这种方式取不到的……
foruok 2014-10-14
  • 打赏
  • 举报
回复
QNetworkInterface有个方法flags()可返回接口的状态,比如是否环回接口,是否激活等,根据这个就可以筛选出来。 另外QNetworkAddressEntry可以取ipv4地址。
-大漠孤烟- 2014-10-14
  • 打赏
  • 举报
回复
非常感谢版主的回复,ipv4的解决了,去掉回环的不知道怎么用QNetworkInterface的flags(),呵呵。就直接来判断了,就去掉了回环。程序如下 QList<QNetworkInterface>list = QNetworkInterface::allInterfaces(); QHostAddress address2; int Neti = 0; foreach(QNetworkInterface interface, list) //遍历每个网络接口 { //硬件地址 qDebug() << "MAC Address:" << interface.hardwareAddress(); if(interface.hardwareAddress() == "00:00:00:00:00:00:00:E0") //去掉这个MAC地址 break; ui->tableWidget->setItem(Neti,2,new QTableWidgetItem(interface.hardwareAddress())); //获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址 QList<QNetworkAddressEntry>entryList = interface.addressEntries(); foreach(QNetworkAddressEntry entry, entryList)//遍历每一个IP地址条目 { address2=entry.ip(); if(address2.protocol() == QAbstractSocket::IPv4Protocol) { //IP地址 qDebug() << "IP Address: " << entry.ip().toString(); if(entry.ip().toString() == "127.0.0.1")//去掉回环 //if(interface.flags()==QNetworkInterface::IsLoopBack)//这样判断还是有回环 break; ui->tableWidget->setItem(Neti,1,new QTableWidgetItem(entry.ip().toString())); } } Neti++; } 运行结果如下: MAC Address: "58:91:CF:33:A6:71" IP Address: "192.168.0.100" MAC Address: "84:8F:69:D1:FC:42" IP Address: "169.254.154.32" MAC Address: "58:91:CF:33:A6:75" IP Address: "169.254.55.50" MAC Address: "00:50:56:C0:00:01" IP Address: "192.168.24.1" MAC Address: "00:50:56:C0:00:08" IP Address: "192.168.112.1" 追问:我是想得到局域网中所有在线设备的MAC地址和IP,然后进行UDP通信。上面的程序只是得到了我电脑的MAC和IP,其他设备的没有获取到啊
源码链接: https://pan.quark.cn/s/a4b39357ea24 Language: 中文 欢迎来到戈戈圈! 当你点开这个存储库的时候,你会看到戈戈圈的图标↓ 本图片均在知识共享 署名-相同方式共享 3.0(CC BY-SA 3.0)许可协议下提供,如有授权遵照授权协议使用。 那么恭喜你,当你看到这个图标的时候,就代表着你已经正式成为了一名戈团子啦! 欢迎你来到这个充满爱与希望的大家庭! 「与大家创造更多快乐,与人们一起改变世界。 」 戈戈圈是一个在中国海南省诞生的创作企划,由王戈wg的妹妹于2018年7月14日正式公开。 戈戈圈的创作类型广泛,囊括插画、小说、音乐等各种作品类型。 戈戈圈的目前成员: Contributors 此外,支持戈戈圈及本企划的成员被称为“戈团子”。 “戈团子”一词最初来源于2015年出生的名叫“团子”的大熊猫,也因为一种由糯米包裹着馅料蒸熟而成的食品也名为“团子”,不仅有团圆之意,也蕴涵着团结友爱的象征意义和大家的美好期盼,因此我们最终于2021年初决定命名戈戈圈的粉丝为“戈团子”。 如果你对戈戈圈有兴趣的话,欢迎加入我们吧(σ≧︎▽︎≦︎)σ! 由于王戈wg此前投稿的相关视频并未详细说明本企划的信息,且相关视频的表述极其模糊,我们特此创建这个存储库,以文字的形式向大家介绍戈戈圈。 戈戈圈自2018年7月14日成立至今,一直以来都秉持着包容开放、和谐友善的原则。 我们深知自己的责任和使命,始终尊重社会道德习俗,严格遵循国家法律法规,为维护社会稳定和公共利益做出了积极的贡献。 因此,我们不允许任何人或组织以“戈戈圈”的名义在网络平台或现实中发布不当言论,同时我们也坚决反对过度宣传戈戈圈的行为,包括但不限于与戈戈圈无关的任何...

21,480

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧