h_addr_list[2] 会不会是这个的错误?
我说的是linux下哈,windows下的不太了解,应该都差不多吧
普通用户一般都用 h_addr 宏,其实就是h_addr_list[0].
你获取3个ip吗?
如果你的机子只获取一个ip地址,那么就是数组越界了.
解决方法:吧h_addr_list[2]改成 h_addr_list[0] 或者 h_addr试试
void CGetipDlg::OnButton1()
{
char szHostName[128] = {0};
gethostname(szHostName, 128);
hostent* phostent = gethostbyname(szHostName);
char* szIP = inet_ntoa(*(in_addr*)&phostent->h_addr_list[2]);
m_EDIT1 = szIP;
UpdateData(FALSE);
}
没有错误啊,其中m_EDIT1是一个edit框对应的变量
运行很好啊