我正在使用Ubuntu。如何使用C程序获取本机或接口eth0的MAC地址。
您需要遍历计算机上所有可用的接口,并ioctl
与SIOCGIFHWADDR
标志一起使用以获取mac地址。mac地址将以6字节的二进制数组形式获取。您还希望跳过环回接口。
#include <sys/ioctl.h>
#include <net/if.h>
#include <unistd.h>
#include <netinet/in.h>
#include <string.h>
int main()
{
struct ifreq ifr;
struct ifconf ifc;
char buf[1024];
int success = 0;
int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
if (sock == -1) { /* handle error*/ };
ifc.ifc_len = sizeof(buf);
ifc.ifc_buf = buf;
if (ioctl(sock, SIOCGIFCONF, &ifc) == -1) { /* handle error */ }
struct ifreq* it = ifc.ifc_req;
const struct ifreq* const end = it + (ifc.ifc_len / sizeof(struct ifreq));
for (; it != end; ++it) {
strcpy(ifr.ifr_name, it->ifr_name);
if (ioctl(sock, SIOCGIFFLAGS, &ifr) == 0) {
if (! (ifr.ifr_flags & IFF_LOOPBACK)) { // don't count loopback
if (ioctl(sock, SIOCGIFHWADDR, &ifr) == 0) {
success = 1;
break;
}
}
}
else { /* handle error */ }
}
unsigned char mac_address[6];
if (success) memcpy(mac_address, ifr.ifr_hwaddr.sa_data, 6);
}
问题内容: 我可以用 获取mac地址,但是如果我在离线计算机上使用此代码,它将无法正常工作。 那么,如何获得Mac地址? 问题答案: 在Java 6+中,你可以使用。 请记住,计算机不能有网卡,尤其是嵌入式或虚拟的网卡。它也可以有多个。你可以使用来获取所有网卡的列表。
问题内容: 我想在Linux中使用C程序找到mac地址。怎么做? 问题答案: 通过Google搜索1分钟:(我自己尚未对其进行测试,此刻我正在Windows机器上工作)
我想要得到机器的MAC地址..但下面写的代码只显示MAC地址时,互联网连接到我的机器,否则它将返回空...我用的是Windows7
问题内容: 我知道您可以使用Java 6来做到这一点。但是我要部署的环境仅限于Java 5。 有谁知道如何在Java 5或更早版本中执行此操作?非常感谢。 问题答案: Java 5中的标准方法是启动一个本机进程来运行ipconfig或ifconfig解析OutputStream以获得您的答案。 例如:
本文向大家介绍iOS如何获取手机的Mac地址,包括了iOS如何获取手机的Mac地址的使用技巧和注意事项,需要的朋友参考一下 首先说明下,下面两种方法均可以获得手机的mac地址,但是有个限制,是在iOS7以下才可以获得。iOS7以后苹果对于sysctl和ioctl进行了技术处理,MAC地址返回的都是02:00:00:00:00:00。 官方文档上这样写的: "Twolow-level network
本文向大家介绍C#程序获取计算机上的内核总数,包括了C#程序获取计算机上的内核总数的使用技巧和注意事项,需要的朋友参考一下 使用Environment.ProcessorCount获取计算机上的内核总数- 以下是显示使用C#的计算机上的内核总数的代码- 示例