说明:
struct
hostent{
char
* h_name;
char
** h_aliases;
short
h_addrtype;
short
h_length;
char
** h_addr_list;
};
#define h_addr h_addr_list[0]
h_name – 地址的正式名称。
h_aliases – 空字节-地址的预备名称的
指针。
h_addrtype –地址类型; 通常是
AF_INET。
h_length – 地址的比特长度。
h_addr - h_addr_list中的第一地址。
代码:
void CGetHostNameIPDlg::OnGet()
{
// TODO: Add your control notification handler code here
WSADATA wsData;
::WSAStartup(MAKEWORD(2,2), &wsData); //如果获取失败,请添加以上两行代码,如果获取成功,就可以不添加
char szhostname[128];
CString str="";
if( gethostname(szhostname, 128) == 0 )//获得主机名
{
// 获得主机ip地址
m_strName=szhostname;
struct hostent * phost;
phost = gethostbyname(szhostname);//根据主机名获得IP地址
int h_length=4;
for( int j = 0; j<h_length; j++ )
{
CString addr;
if( j > 0 )
str += ".";
addr.Format("%u", (unsigned int)((unsigned char*)phost->h_addr_list[0])[j]);
str += addr;
}
m_strIP=str;
}
UpdateData(FALSE);
}