取的ip地址不正确

来源:百度知道 编辑:UC知道 时间:2024/06/28 07:35:30
int main(){
int a=socket(AF_INET,SOCK_STREAM,0);
char info[64];
string ip;
gethostname(info,sizeof(info));
cout << info << endl;
struct hostent *ph;
ph = gethostbyname(info);
ip=inet_ntoa(*(struct in_addr*)*ph->h_addr_list);
cout << ip << endl;;
return 0;
}
我的linux ip设的是172.16.32.146 为什么区出来的是127.0.1.1

那个h_addr_list是一个链表的,里面是本机IP表.
本机IP表一般是3-5项的,最开始的是127.0.0.1
下来的才可能是你的172.16.32.146的.

你把那个表都输出看一看就知道了.
<在我的机器上,表的第3行才是我的注册IP>

因为有多个ip。
看看/etc/hosts文件。