关于显示本地IP的问题
我要高毕业设计,搞个分布式系统,为了显示本地IP加入了如下代码,
在家调试,成功!顺利获得最外层的IP,(使用ADSL、视讯)但在学校就出错了。
(有外部IP的校园网)。
同是这段代码,在同学搞的分布式系统却没有同样的情况
代码如下:
WSAData wsaData;
if (WSAStartup(MAKEWORD(1,1),&wsaData)!=0)//初始化WINSOCK调用
{
MessageBox(NULL,"Wrong WinSock Version","Error",MB_OK);
return ;
}
char HostName[80];
LPHOSTENT lpHostEnt;
struct in_addr addr[5];
//本程序假设主机不是多宿主机,即最多只有
// 一块网卡和一个动态IP
for (int i=0; i<2; i++)
memset(&addr[i],0,sizeof(in_addr));
//对in_addr结构清0,以利后面填写
// 得到本主机名
if(gethostname(HostName,sizeof(HostName))==SOCKET_ERROR)
{
MessageBox(NULL,"Can't getting local host name.","Error",MB_OK);
return ;
}
Edit11->Text = HostName;
lpHostEnt=gethostbyname(HostName);//利用得到的主机名去获得主机结构
if (!lpHostEnt)
{
MessageBox(NULL,"Yow! Bad host lookup.","Error",MB_OK);
return ;
}
for (int i=0; lpHostEnt->h_addr_list[i]!=0; i++)
//从主机地址表中得到IP地址
{
memcpy(&addr[i],lpHostEnt->h_addr_list[i],sizeof(in_addr));
Edit12->Text = inet_ntoa(addr[i]);
}
WSACleanup(); //释放WINSOCK调用