阅读量:3
在 Linux 系统中,您可以使用 C++ 编写一个简单的程序来获取本地 IP 地址
#include
#include
#include
#include
#include
#include
#include
std::string get_local_ip() {
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
std::cerr << "Error creating socket" << std::endl;
return "";
}
struct sockaddr_in server_addr;
std::memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(0);
if (getsockname(sockfd, (struct sockaddr*)&server_addr, &server_addr.sin_len) < 0) {
std::cerr << "Error getting socket name" << std::endl;
close(sockfd);
return "";
}
close(sockfd);
char ip[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &(server_addr.sin_addr), ip, INET_ADDRSTRLEN);
return std::string(ip);
}
int main() {
std::string local_ip = get_local_ip();
if (!local_ip.empty()) {
std::cout << "Local IP address: " << local_ip << std::endl;
} else {
std::cerr << "Failed to get local IP address" << std::endl;
}
return 0;
}
这个程序首先创建一个 UDP 套接字,然后使用 getsockname() 函数获取套接字的本地地址。最后,它使用 inet_ntop() 函数将 IP 地址从二进制格式转换为可读字符串。
要编译和运行此程序,请将其保存为 get_local_ip.cpp,然后在终端中执行以下命令:
g++ get_local_ip.cpp -o get_local_ip
./get_local_ip
这将输出您的本地 IP 地址。请注意,此方法仅适用于 IPv4 地址。如果您需要获取 IPv6 地址,您需要对代码进行相应的修改。
以上就是关于“linux c++如何获取本机ip地址”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm