GetHostByName&中的问题MFC中的inet_ntoa(VC ++)

时间:2010-12-13 07:24:03

标签: visual-c++ mfc

我使用下面的代码从传递域名获取IP。 它正在返回适当的IP,但现在当某些网络设置被更改时,服务器Ip也会更改。 现在als0它正在归还我的旧IP而不是新IP。 任何帮助都非常赞赏。

CString CNDSClientDlg::GetIPFromDomain(char* cDomainName)
{
        if(cDomainName == NULL)
        {
            MessageBox("Invalid Domain Name","Network Drive Solution", MB_ICONERROR | MB_OK);   
            return "";
        }
        char *cIPAddress = NULL;
        WSADATA wsaData = {0};
        int iResult = 0;        
        hostent *remoteHost = NULL;     
        struct in_addr addr;

    // Initialize Winsock
    iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (iResult != 0) 
    {           
        MessageBox("WSAStartup failed","Network Drive Solution", MB_ICONERROR | MB_OK); 
        return "";

    }

    remoteHost = gethostbyname(cDomainName);
    addr.s_addr = *(u_long *) remoteHost->h_addr_list[0];       
    cIPAddress =  inet_ntoa(addr);

    return cIPAddress;

}

1 个答案:

答案 0 :(得分:0)

您可能从DNS缓存中获取地址。

使用ipconfig /flushdns清除缓存。