bool getLocalHostAddr(std::string &ip)
{
int sockfd;
struct ifreq req;
struct sockaddr_in *host;
char buf[16] = {0};
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1)
{
cerr << "getLocalHostAddr: Creat socket has error..." << currentDateTime() << endl;
return false;
}
bzero(&req, sizeof(struct ifreq));
strcpy(req.ifr_name, "eth0");
if (ioctl(sockfd, SIOCGIFADDR, &req) == -1)
{
cerr << "getLocalHostAddr: ioctl has error..." << currentDateTime() << endl;
return false;
}
host = (struct sockaddr_in *)&req.ifr_addr;
strcpy(buf, inet_ntoa(host->sin_addr));
close(sockfd);
stringstream ss;
ss << buf;
istringstream iss(ss.str());
iss >> ip;
cout << "getLocalHostAddr: " << ip << " " << currentDateTime() << endl;
return true;
}
ubuntu获取本地IP地址
最新推荐文章于 2024-01-19 23:43:46 发布