我試圖找出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. ip和mac地址linux
- 2. 在C#中相同LAN上的IP地址到MAC地址的IP地址
- 3. 從FreeBSD上的GUID獲取MAC地址/接口名稱?
- 4. C#在Linux和Mac
- 5. 查找MAC地址
- 6. MAC地址和IP地址
- 7. 在C中使用MAC和IP地址
- 8. Mac地址C++ osx
- 9. visual 6.0並找到mac地址
- 10. Java - 通過MAC地址找到主機
- 11. 如何找到一個mac地址?
- 12. IP地址在Linux上
- 13. 如何在Java中的linux界面過程中找到原始MAC地址?
- 14. 獲取MAC地址問題Linux(Ubuntu)
- 15. bash grep mac地址unix/linux用分號
- 16. 獲取主機的MAC地址和IP地址 - C++
- 17. 獲取MAC地址C#
- 18. Mac OS X上的PHPMailer和CC地址
- 19. C#獲取mac地址獲取服務器mac地址
- 20. O_DIRECT與Linux/FreeBSD上的O_SYNC
- 21. 在ColdFusion中查找MAC地址
- 22. 檢查在C和LINUX和FreeBSD的ipv4和ipv6轉發
- 23. 如何從使用Python的Linux上的已知MAC地址獲取IP地址
- 24. 在Mac OS X和iOS上查找本地IP地址的接口/路由?
- 25. Linux IPV6主地址和副地址
- 26. 如何在我的Mac上找到本地地址以便我可以scp?
- 27. 在java中使用IP地址查找mac地址
- 28. Python和libpcap。找到數據包的源mac地址
- 29. 如何找到我的Linux機器上的主要IP地址?
- 30. 在Objective-C中獲取MAC地址
我不知道你可以用libpcap找到你自己的mac地址。你能指出我的一些功能,可以幫助我得到我的Mac嗎? – Blackie123
@ Blackie123:更新了答案。包括一個例子。 – RedComet
對我來說看起來太麻煩了。爲什麼不只是getifaddrs(3)? – blaze