c语言获取所有网卡ip
时间: 2023-08-04 08:05:00 浏览: 68
要获取所有网卡的IP地址,可以使用C语言中的getifaddrs函数。这个函数会返回一个链表,包含了所有网络接口的地址信息。下面是一个获取所有网卡IP地址的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <string.h>
int main() {
struct ifaddrs *ifaddr, *ifa;
int family, s;
char host[NI_MAXHOST];
if (getifaddrs(&ifaddr) == -1) {
perror("getifaddrs");
exit(EXIT_FAILURE);
}
// Walk through linked list, maintaining head pointer so we can free list later
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
if (ifa->ifa_addr == NULL) {
continue;
}
family = ifa->ifa_addr->sa_family;
if (family == AF_INET || family == AF_INET6) {
s = getnameinfo(ifa->ifa_addr, (family == AF_INET) ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6),
host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
if (s != 0) {
printf("getnameinfo() failed: %s\n", gai_strerror(s));
exit(EXIT_FAILURE);
}
printf("%s: %s\n", ifa->ifa_name, host);
}
}
freeifaddrs(ifaddr);
return 0;
}
```
这个代码会遍历所有网卡,打印出每个网卡的名称和对应的IP地址。注意,这个代码需要在Linux或类Unix系统下运行。如果你在Windows系统下运行,需要使用另外的函数来获取网卡信息。