我试图找出MAC地址,我设法在Linux中使用sysctl创建工作解决方案,问题是,这个解决方案不适用于我正在开发的FreeBSD版本。有没有什么办法可以找出C以外的MAC地址,而不是使用sysctl?在Linux和FreeBSD上找到MAC地址C
回答
使用libpcap库。它是您可以找到的最多平台的方式。
此库用于网络嗅探器和入侵检测,以及专用测量其他网络统计信息。用于衡量每个进程网络使用情况的nethogs公用程序,iftop用于衡量每台机器/端口带宽的使用情况。在许多角色中非常灵活。
用C语言编写,但其他语言也有一些包装。
1:http://en.wikipedia.org/wiki/Pcap
[2]:http://www.tcpdump.org
[3]:http://sourceforge.net/projects/libpcap/
编辑: 这里用的代码和功能的完整和详细的和工作实施例详述:
http://coderrr.wordpress.com/2008/03/07/get-the-mac-address-of-a-local-ip/
有很多教程和源代码是你最好的朋友。
编辑2:大火指出getifaddrs(3)
这似乎是做这项工作,只是几个警告,它的一个非posix函数。是glibc linux支持的bsd函数,但不是文档。几乎是一个无证功能:-)
所有文件都手册页和手册在kernel.org:
不在POSIX.1-2001。这个函数首先出现在BSDi中,并且 出现在BSD系统的 上,但是记录的语义略有不同 - 每个接口返回 一个条目,而不是每个地址。这意味着如果接口没有地址,ifa_addr和其他 字段实际上可以为NULL,并且如果接口分配了IP地址,则不会返回链路级别的地址 。另外,选择ifa_broadaddr或ifa_dstaddr的 方法在各种 系统上有所不同。
和
的地址返回Linux上通常将被分配给接口的IPv4和IPv6 地址 ,还含有每个接口 一个AF_PACKET地址较低级细节有关接口和它的物理层。在 这种情况下,ifa_data字段可能包含一个指向结构的指针net_device_stats,定义在其中,其中包含各种接口属性和统计信息。
因此,它可能在行为上有所不同,无论如何您可能需要编辑#ifndef
。
kernel.org手册页在http://www.kernel.org/doc/man-pages/online/pages/man3/getifaddrs.3.html确实提供了示例代码,这可能会有所帮助。与上面的链接相比,我的本地linux手册页相当糟糕。
我仍然认为,如果仅仅因为别人已经完成了所有可移植性工作以及通过使用它获得的所有额外功能,libpcap更便于携带。
希望这会有所帮助。
getifaddrs(3)返回本地接口上的IP地址和MAC地址。在Linux和FreeBSD之间便携。
- 1. 在C#中相同LAN上的IP地址到MAC地址的IP地址
- 2. 从FreeBSD上的GUID获取MAC地址/接口名称?
- 3. 查找MAC地址
- 4. 在C中使用MAC和IP地址
- 5. visual 6.0并找到mac地址
- 6. Java - 通过MAC地址找到主机
- 7. 如何找到一个mac地址?
- 8. bash grep mac地址unix/linux用分号
- 9. 获取MAC地址C#
- 10. Mac OS X上的PHPMailer和CC地址
- 11. 在ColdFusion中查找MAC地址
- 12. 检查在C和LINUX和FreeBSD的ipv4和ipv6转发
- 13. 在Mac OS X和iOS上查找本地IP地址的接口/路由?
- 14. Linux IPV6主地址和副地址
- 15. 在java中使用IP地址查找mac地址
- 16. Python和libpcap。找到数据包的源mac地址
- 17. 如何找到我的Linux机器上的主要IP地址?
- 18. MAC地址Iphone和桌面
- 19. xmlsocket flex和mac地址
- 20. sed和解析MAC地址
- 21. 我将代码从FreeBSD移植到Linux,但不提取目标地址
- 22. MAC地址到IP转换
- 23. 如何在IRIX上以编程方式查找MAC地址?
- 24. 在Mac上查找文件的目录地址
- 25. 使用Python和Linux获取远程MAC地址
- 26. Makefile为Linux和Mac与地址消毒剂
- 27. 在FreeBSD上枚举IP地址的所有网络接口
- 28. 在linux/freebsd/macosx上用PHP找到一个实用程序的安装路径
- 29. 在文件路径中使用MAC地址 - 找不到文件?
- 30. SNMP:如何在网络中找到一个mac地址?
我不知道你可以用libpcap找到你自己的mac地址。你能指出我的一些功能,可以帮助我得到我的Mac吗? – Blackie123
@ Blackie123:更新了答案。包括一个例子。 – RedComet
对我来说看起来太麻烦了。为什么不只是getifaddrs(3)? – blaze