以下代码为什么出错啊
char szHostName[128]={0};
gethostname(szHostName,128);
hostent* pHostent=gethostbyname(szHostName);
char *szIP=inet_ntoa(*(in_addr*)&pHostent->h_addr_list[2]);
m_ServerIP.SetWindowText(szIP);
char szHostName[128]={0};
gethostname(szHostName,128);
hostent* pHostent=gethostbyname(szHostName);
char *szIP=inet_ntoa(*(in_addr*)&pHostent->h_addr_list[2]);
m_ServerIP.SetWindowText(szIP);
CString GetLocalIp()
{
struct hostent* phost;
char ip[20];
char hostname[50]; gethostname(hostname,50);
phost = gethostbyname(hostname);
char ** names;
names = phost->h_aliases;
char ** iplist;
iplist = phost->h_addr_list;
while( * iplist)
{
strcpy(ip,inet_ntoa( * (struct in_addr * ) * iplist));
iplist ++;
}
CString LocalIp = ip;
return LocalIp;
}
2、看szHostName[128]是否会溢出
3、确定h_addr_list数组有那么多个元素(3个),索引是否合法,szIP是否获取成功
2.
//之前调用WSAStartup初始化套接字库没有?
char szHostName[128]={0};
gethostname(szHostName,128);
hostent* pHostent=gethostbyname(szHostName);
char *szIP=inet_ntoa(*(in_addr*)&pHostent->h_addr_list[2]); //溢出没有
m_ServerIP.SetWindowText(szIP);