mingw 中 ioctlsocket 的 SIOCGIFHWADDR
Posted
技术标签:
【中文标题】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 works
ioctlsocket(fd, SIOCGIFHWADDR, &ifr); //win32, doesn't work
【问题讨论】:
“不起作用”是什么意思? 【参考方案1】:有一些不同的 Windows API 可以为您获取本地 MAC 地址。
GetAdaptersAddresses 应该适合你。 (查看返回的 IP_ADAPTER_ADDRESSES 集合中的 PhysicalAddress 成员。
您还可以使用 GetIfTable 并查看返回的 MIB_IFROW 结构集中的 bPhysAddr 成员。
【讨论】:
以上是关于mingw 中 ioctlsocket 的 SIOCGIFHWADDR的主要内容,如果未能解决你的问题,请参考以下文章