c++如何获得本地ip
时间: 2024-05-10 08:14:21 浏览: 93
在C语言中,可以通过调用系统函数来获取本地IP地址。常用的方法是使用`getifaddrs()`函数,该函数可以获取本地网络接口的信息,包括IP地址、子网掩码、网关等。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ifaddrs.h>
#include <arpa/inet.h>
int main() {
struct ifaddrs *ifaddr, *ifa;
int family, s;
char host[NI_MAXHOST];
if (getifaddrs(&ifaddr) == -1) {
perror("getifaddrs");
exit(EXIT_FAILURE);
}
// 遍历网络接口
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
if (ifa->ifa_addr == NULL) {
continue;
}
family = ifa->ifa_addr->sa_family;
// 仅获取IPv4地址
if (family == AF_INET) {
s = getnameinfo(ifa->ifa_addr, sizeof(struct sockaddr_in),
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;
}
```
运行该程序,将会输出本地所有的IPv4地址和对应的网络接口名称。
阅读全文