2010-12-13 131 views
0

我使用下面的代碼從傳遞域名獲取IP。 它正在返回我正確的IP,但現在當某些網絡設置發生變化時服務器IP也發生了變化。 現在als0它回報我,舊IP不是新的。 任何幫助都非常讚賞。MFC中的GetHostByName&inet_ntoa中的問題(VC++)

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; 

}

+0

您是否在'%windir%\ system32 \ drivers \ etc'中檢查了hosts文件?如果在那裏提到映射,那麼它將返回文件中提到的IP地址。 – Naveen 2010-12-13 07:32:38

+0

@Naveen:沒有映射完成。 – 2010-12-13 08:34:56

回答

0

你可能從你的DNS緩存中的地址。使用ipconfig /flushdns清除緩存。