//解析动态域名
while(1)
{
while(!gethostbyname("www.163.com"))
{
AfxMessageBox("没得到"); //一直在这里循环
Sleep(10);
}
hp = gethostbyname(m_edit2);
pszAddr = inet_ntoa( *(struct in_addr *)hp->h_addr_list[0] );
break;//这时候只有在MS_DOS窗口输入"ping www.163.com"才能跳出循环
}
AfxMessageBox(pszAddr); //得到域名请问专家这是怎么回事?
谢谢了.
while(1)
{
while(!gethostbyname("www.163.com"))
{
AfxMessageBox("没得到"); //一直在这里循环
Sleep(10);
}
hp = gethostbyname(m_edit2);
pszAddr = inet_ntoa( *(struct in_addr *)hp->h_addr_list[0] );
break;//这时候只有在MS_DOS窗口输入"ping www.163.com"才能跳出循环
}
AfxMessageBox(pszAddr); //得到域名请问专家这是怎么回事?
谢谢了.
const char FAR * name
);返回的是一个结构体参考一下这个哈
CString CURLIPDlg::YUMING2IP(CString m_url)
{
CString YUMING=m_url;
struct hostent *hptr;
/* 调用gethostbyname()。调用结果都存在hptr中 */
if( (hptr=gethostbyname(YUMING) ) == NULL )
{
//AfxMessageBox("gethostbyname error for host:" + YUMING);
//return 0; /* 如果调用gethostbyname发生错误,返回1 */
//MessageBox("如果调用gethostbyname发生错误,返回1 *");
return "get IP error";
}
else
{
//解析返回的hostent信息
hostent &he = *hptr;
sockaddr_in sa;
//for(int nAdapter = 0; he.h_addr_list[nAdapter]; nAdapter++)
memcpy(&sa.sin_addr.s_addr, he.h_addr_list[0], he.h_length);
//he.h_addr_list[nAdapter]应该有若干个,我只要一个IP就成了,就取了[0]的IP,
//输出机器的IP地址
//MessageBox("Address: %s\n", inet_ntoa(sa.sin_addr));//将网络地址转换成“.”点隔的字符串格式
return inet_ntoa(sa.sin_addr); //这里是关键,也是本人研究很长时间才找到的,感谢CSDN上的朋友们.
}}