在Linux C中获取本机IP地址可以通过使用`getifaddrs`函数来实现。这个函数可以获取网络接口的信息,包括IP地址。下面是一个示例代码,展示了如何使用该函数获取本机的IPv4地址。
c
#include
#include
#include
#include
#include
#include
int main() {
struct ifaddrs *ifaddr, *ifa;
char ip[INET_ADDRSTRLEN];
// 获取网络接口地址
if (getifaddrs(&ifaddr) == -1) {
perror("getifaddrs");
exit(EXIT_FAILURE);
}
// 遍历每一个网络接口
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
// 只处理IPv4地址
if (ifa->ifa_addr && ifa->ifa_addr->sa_family == AF_INET) {
// 尝试将地址转换为字符串
if (inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr, ip, sizeof(ip)) != NULL) {
printf("%s: %s\n", ifa->ifa_name, ip);
} else {
perror("inet_ntop");
}
}
}
freeifaddrs(ifaddr);
return 0;
}
代码说明:
1. `getifaddrs`:这是获取本机所有网络接口地址的函数。
2. `ifaddrs`:数据结构,包含网络接口的信息。
3. `inet_ntop`:将网络地址转换为字符串表示形式。
编译和运行:
将上面的代码复制到一个文件中,例如 `get_ip.c`,然后使用如下命令编译和运行:
sh
gcc -o get_ip get_ip.c
./get_ip
运行后,将输出每个网络接口的名称以及对应的IPv4地址。注意,可能还会显示一些接口的IPv6地址等信息,但代码中只处理IPv4。
查看详情
查看详情