mingw 中 ioctlsocket 的 SIOCGIFHWADDR

时间:2024-01-03 18:10:41 买帖  | 投诉/举报

技术标签:

【中文标题】mingw 中 ioctlsocket 的 SIOCGIFHWADDR【英文标题】:SIOCGIFHWADDR for ioctlsocket in mingw 【发布时间】:2012-03-06 12:17:07 【问题描述】:

我正在使用 mingw 编译我的 cpp 程序,该程序必须获取 MAC 地址。在 unix 中,sys/ioctl.h提供 "SIOCGIFHWADDR" 来读取它。但是对于 mingw win32,有一个名为 ioctlsocket 的 ioctl 替代品。我正在使用它,但它没有“SIOCGIFHWADDR”命令。

如何使用 ioctlsocket 读取硬件 MAC 地址?

提前致谢。

以下是我正在使用的功能

ioctl(fd, SIOCGIFHWADDR, &ifr); //Unix it worksioctlsocket(fd, SIOCGIFHWADDR, &ifr); //win32, doesn"t work

【问题讨论】:

“不起作用”是什么意思? 【参考方案1】:

有一些不同的 Windows API 可以为您获取本地 MAC 地址。

GetAdaptersAddresses 应该适合你。 (查看返回的 IP_ADAPTER_ADDRESSES 集合中的 PhysicalAddress 成员。

您还可以使用 GetIfTable 并查看返回的 MIB_IFROW 结构集中的 bPhysAddr 成员。

【讨论】:

以上是关于mingw 中 ioctlsocket 的 SIOCGIFHWADDR的主要内容,如果未能解决你的问题,请参考以下文章