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的主要内容,如果未能解决你的问题,请参考以下文章

ioctlsocket 或 recv 在 Windows 套接字编程中需要更多时间来执行?

编译 sio 客户端时出错

如何使用 sio.savemat 函数保存多个数据集?

黑金AX301开发板视频图像处理:探索

OV7725 SCCB协议

Centos 7禁止ftdi_sio模块