使用C语言查询LInux网卡IP地址
时间: 2023-05-22 09:07:07 浏览: 141
你可以使用以下代码片段查询Linux网卡IP地址:
```
#include <stdio.h>
#include <stdlib.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <string.h>
int main() {
struct ifaddrs *ifaddrs, *ifa;
struct sockaddr_in *sockaddr;
char ip_address[INET_ADDRSTRLEN];
if (getifaddrs(&ifaddrs) == -1) {
perror("getifaddrs");
exit(EXIT_FAILURE);
}
for (ifa = ifaddrs; ifa != NULL; ifa = ifa->ifa_next) {
if (ifa->ifa_addr == NULL) {
continue;
}
if (ifa->ifa_addr->sa_family == AF_INET) {
sockaddr = (struct sockaddr_in *) ifa->ifa_addr;
if (inet_ntop(AF_INET, &sockaddr->sin_addr, ip_address, INET_ADDRSTRLEN) == NULL) {
perror("inet_ntop");
continue;
}
printf("%s: %s\n", ifa->ifa_name, ip_address);
}
}
freeifaddrs(ifaddrs);
return 0;
}
```
这段代码使用了getifaddrs()函数获取当前机器上的网络接口地址列表,ifaddrs结构体中包含了每个接口的名称以及其对应的地址族、地址、掩码等信息。我们只需要遍历这个列表,找到地址族为AF_INET(仅考虑IPv4地址)的接口,然后使用inet_ntop()函数将其转换成人类可读的格式即可。
阅读全文