ubuntuc++获取ip
时间: 2024-10-06 19:05:10 浏览: 28
在Ubuntu上使用C++获取IP地址通常涉及到网络编程,特别是使用系统的网络接口信息。你可以通过`getifaddrs()`函数从`ifaddrs.h`头文件获取网络接口及其IP地址。以下是一个简单的示例:
```cpp
#include <iostream>
#include <net/ifaddrs.h>
#include <netinet/in.h>
void print_ifaddrs(ifaddrs *ifa, int depth = 0) {
if (ifa == nullptr)
return;
std::cout << "Interface: " << ifa->ifa_name << ", IP Address: ";
struct sockaddr_in *sa = (struct sockaddr_in *)&ifa->ifa_addr;
char str[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &sa->sin_addr, str, INET_ADDRSTRLEN);
std::cout << str << std::endl;
depth++;
print_ifaddrs(ifa->ifa_next, depth);
}
int main() {
ifaddrs *ifaddr, *ifa;
getifaddrs(&ifaddr);
try {
for (ifa = ifaddr; ifa != nullptr; ifa = ifa->ifa_next) {
// 只处理IPv4地址
if (ifa->ifa_addr && ifa->ifa_addr->sa_family == AF_INET)
print_ifaddrs(ifa);
}
} catch (...) {
std::cerr << "Error getting interface information" << std::endl;
}
freeifaddrs(ifaddr);
return 0;
}
```
在这个程序中,`getifaddrs()`获取所有网络接口的信息,然后遍历它们并打印出IP地址。记得运行前确保有权限访问网络接口信息。
阅读全文