可以使用Linux系统提供的socket API来获取网络接口信息,然后从中获取网卡地址。下面是一个示例代码:
```c++
#include
#include
#include
#include
#include
#include
int main() {
int sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0) {
perror("socket");
exit(1);
}
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ - 1);
if (ioctl(sock, SIOCGIFHWADDR, &ifr) < 0) {
perror("ioctl");
close(sock);
exit(1);
}
unsigned char *mac = (unsigned char *)ifr.ifr_hwaddr.sa_data;
printf("MAC address of eth0: %02x:%02x:%02x:%02x:%02x:%02x\n",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
close(sock);
return 0;
}
```
该程序创建了一个socket,并通过ioctl函数获取了名为"eth0"的网络接口的硬件地址信息(即MAC地址)。最后将MAC地址以十六进制形式输出。