我正在尝试通过C ++获取计算机的IP地址,并且已经显示了一些奇怪的输出。
这是我的代码:
struct ifaddrs *ifadp,*tmp;
char addrbuf[NI_MAXHOST] ;
int s;
getifaddrs(&ifadp);
for(tmp = ifadp; tmp != NULL; tmp = tmp->ifa_next) {
if(tmp->ifa_addr == NULL)
continue;
s = getnameinfo(tmp->ifa_addr, sizeof(struct sockaddr_in),addrbuf,NI_MAXHOST,NULL,0,NI_NUMERICHOST);
if(std::strcmp(tmp->ifa_name,"eth0")==0)
std::cout << tmp->ifa_name<< " " << addrbuf<<std::endl;
}
freeifaddrs(ifadp);
return 0;
和输出:
eth0 �A`��
eth0 10.134.50.86
eth0 10.134.50.86
关于第一个输出的任何想法?同时,OS是linux。