char* hostname="www.csdn.net";
char* ip_address=DNSQuery(hostname);char* Cvctest0Dlg::DNSQuery(char* hostname)
{
//hostname="www.csdn.net";//如果把他打开可以正常的反回IP地址,如果关上这行,从外面传指针进来就不能成功返回ip地址了
if(hostname==NULL)
{
TRACE("DNSQuery::hostname failed!\n");
return NULL;
}
//初始化套接字 begin
WSADATA wsaData;
int iResult;
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
//初始化套接字 end if (iResult != 0)
{//初始化套接字失败
TRACE("DNSQuery::WSAStartup failed: %d\n", iResult);
return NULL;
}
else
{//初始化套接字成功
TRACE("ip_address:%s\n",hostname);
struct hostent* hostent_var=gethostbyname(hostname);//如果char*是函数内赋值就没有问题,如果是函数外传进的指针就会出现null或者返回域名服务器的地址
if (hostent_var != NULL)
{//DNS查询成功
struct in_addr addr;
TRACE("h_addr_list: %d\n", sizeof(hostent_var->h_addr_list));
addr.s_addr = *(u_long *) hostent_var->h_addr_list[0];
return inet_ntoa(addr);
}
else
{
TRACE("DNSQuery::hostent_var failed!\n");
return NULL;
}
}
}
char* ip_address=DNSQuery(hostname);char* Cvctest0Dlg::DNSQuery(char* hostname)
{
//hostname="www.csdn.net";//如果把他打开可以正常的反回IP地址,如果关上这行,从外面传指针进来就不能成功返回ip地址了
if(hostname==NULL)
{
TRACE("DNSQuery::hostname failed!\n");
return NULL;
}
//初始化套接字 begin
WSADATA wsaData;
int iResult;
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
//初始化套接字 end if (iResult != 0)
{//初始化套接字失败
TRACE("DNSQuery::WSAStartup failed: %d\n", iResult);
return NULL;
}
else
{//初始化套接字成功
TRACE("ip_address:%s\n",hostname);
struct hostent* hostent_var=gethostbyname(hostname);//如果char*是函数内赋值就没有问题,如果是函数外传进的指针就会出现null或者返回域名服务器的地址
if (hostent_var != NULL)
{//DNS查询成功
struct in_addr addr;
TRACE("h_addr_list: %d\n", sizeof(hostent_var->h_addr_list));
addr.s_addr = *(u_long *) hostent_var->h_addr_list[0];
return inet_ntoa(addr);
}
else
{
TRACE("DNSQuery::hostent_var failed!\n");
return NULL;
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货