Проблема в GetHostByName и inet_ntoa в MFC (VC ++) - PullRequest
1 голос
/ 13 декабря 2010

Я использую приведенный ниже код для получения IP от прохождения доменного имени.Он возвращает мне правильный IP, но теперь, когда некоторые сетевые настройки изменены, Ip сервера также изменяется.Теперь als0 возвращает мне, что старый 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 голосов
/ 13 декабря 2010

Вы, вероятно, получаете адрес из своего кэша DNS.

Используйте ipconfig /flushdns для очистки кэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...