Avatar billede klaush Nybegynder
21. december 2005 - 14:39 Der er 2 kommentarer

Lokal IP adresse med MFC program

Goddag kære eksperter

Jeg er stadig ret grøn når det kommer til c++ programering, jeg er på nuværende tidspunkt under uddannelse, og vi har lært en masse om c++. Så som at kommunikere over COM port, og netværk osv. Men nu ville jeg gerne lave et hurtigt program der lige kan vise maskinens IP adresse. (Det skal bruges på arbejde, og de maskiner har kun ét netkort installeret, så det er ikke nødvendigt at tage højde for flere IP adresser på nuværende tidspunkt)

Vi har før lavet noget ligende i et skole projekt, med der brugte vi det til at vise den maskine der loggede på serveren, ved at serveren brugte GetPeerName på den socket klienten var forbundet med.

Det programmet skal gøre er sådan set bare at vise IP adressen, når den starter, så koden skriver jeg i OnInitDialog (jeg forstiller mig at bruge en "IP Address Control" boks til at vise den i)

Men hvordan den skal vises og i hvilken boks er sådan set heller ikke så vigtigt, jeg vil bare gerne have fat i værdien på en eller anden måde :)

Er der nogen der kan hjælpe mig i den rigtige retning?

Mvh. Klaus
Avatar billede soreno Praktikant
21. december 2005 - 14:45 #1
Avatar billede jpk Nybegynder
21. december 2005 - 14:45 #2
Jeg har lavet følgende funktion, der udfylder 2 CString members kaldet m_pc_name og m_ip_address:
(du skal linke med ws2_32.lib)

int CNetInfoDlg::GetNameAndIp()
{
    WSAData wsaData;
    WSAStartup(MAKEWORD(1, 1), &wsaData);
    char ac[80];
    if (gethostname(ac, sizeof(ac)) == SOCKET_ERROR)
    {
        cerr << "Error " << WSAGetLastError() <<
                " when getting local host name." << endl;
        WSACleanup();
        return 1;
    }
    m_pc_name = ": ";
    m_pc_name += ac;

    struct hostent* phe = gethostbyname(ac);
    if (phe == 0) {
        cerr << "Yow!  Bad host lookup." << endl;
        WSACleanup();
        return 1;
    }
   
    for (int i = 0; phe->h_addr_list[i] != 0; ++i) {
        struct in_addr addr;
        memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));
        m_ip_address = i + ": ";
        m_ip_address += inet_ntoa(addr);
    }

    WSACleanup();
    return 0;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester