Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Ip-adresse des lokalen Pc's

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.09.2002, 13:43 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,
ich versuche wie folgt die IP-Adresse des lokalen PC's zu ermitteln:


C++:
char cHost[256];
if(!gethostname(cHost,255))
{
    hostent *host = gethostbyname(cHost);
}



nur in host->h_addr_list[0] steht nur seltsame zeichen drin, und mein PC-Name, nicht aber die IP, was mach ich da falsch?
(h_addr_list[1], usw ist leer)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.09.2002, 13:47 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hmm lol in den ersten 4Bytes von h_addr_list[0] steht meine Addresse drin ...

Nur, es ist nur leider die von der Netzwerkkarte, nicht meinem Gateway (hänge an einem Router)

Wie bekomm ich die Adresse mit der ich im Internet "herumfuhrwerke"?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.09.2002, 22:12 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Flo,
nur als Denkanstoß:

C++:
void CGetIPDlg::OnButton1()
{
    short number = GetNumberOfHostIpAddresses();
    /*  2 : in meinem Fall Ethernet - Adapter
        1 : DFÜ-Adapter    /Modem/ISDN etc.*/

    CString strIP = GetHostIPAddressString(1);

}


/*  WSADATA wsd;
    WSAStartup(0x0101,&wsd);
    erfolgt an geeigneter Stelle  */


short CGetIPDlg::GetNumberOfHostIpAddresses()
{
    char szHostname[200];
    HOSTENT *pHostEnt;
    short nLoop = 0;
    memset(szHostname, 0, 200);
    if(gethostname(szHostname, sizeof(szHostname))==SOCKET_ERROR)
        return -1;
    if(0 == (pHostEnt = gethostbyname(szHostname)))
        return -1;
    nLoop = 0;
    while(pHostEnt->h_addr_list[nLoop] != 0)
        nLoop++;
    TRACE(_T("CGetIPDlg::GetNumberOfHostIpAddresses(...) Called. IPs = %d\n"), nLoop);
    return nLoop;
}

CString CGetIPDlg::GetHostIPAddressString(short sAdapter)
{
    TRACE(_T("CGetIPDlg::GetHostIPAddressString(...) called. Adapter = %d\n"), sAdapter);
    CString strResult;
    char szHostname[200];
    char szIPAddr[16];
    LPSTR lpszIPAddr;
    HOSTENT *pHostEnt;
    short nAdapter = sAdapter-1;
    struct sockaddr_in sAddr;
    memset(szHostname,0,200);
    memset(&sAddr, 0, sizeof(struct sockaddr_in));
    if(nAdapter < 0){
        strResult.Empty();
        return strResult;
    }
    if(gethostname(szHostname, sizeof(szHostname))==SOCKET_ERROR){
        strResult.Empty();
        return strResult;
    }
    if(0 == (pHostEnt = gethostbyname(szHostname))){
        strResult.Empty();
        return strResult;
    }
    if(pHostEnt->h_addr_list[nAdapter])
        memcpy(&sAddr.sin_addr.s_addr,
        pHostEnt->h_addr_list[nAdapter],pHostEnt->h_length);
    else{
        strResult.Empty();
        return strResult;
    }
    lpszIPAddr = inet_ntoa(sAddr.sin_addr);
    if(lpszIPAddr){
        strcpy((LPSTR)szIPAddr, (LPSTR)lpszIPAddr);
        strResult = szIPAddr;
        TRACE(_T("CGetIPDlg::GetHostIPAddressString(...) called. IP = %s.\n"), strResult);
        return strResult;
    }
    else{
        strResult.Empty();
        TRACE(_T("CGetIPDlg::GetHostIPAddressString(...) called. IP = %s.\n"), strResult);
        return strResult;
    }
}

--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 27.09.2002 um 22:18 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.09.2002, 09:09 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo Uwe,
super funktioniert! Wie schaffst du das nur immer? (Liegt das vielleicht an deinen Ohren? )

Er liest mir zwar nur die ip meines lanadapters aus, da ich ja eben an einem router hänge ... (mein rechner hat nur 1e ip ...)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.10.2002, 21:08 Uhr
Tobi



www.fun-soft.de//forum/showtopic.php?threadid=664&time=1034423091
--
Mit Computern können wir Probleme lösen die wir ohne sie gar nicht erst hätten!

mfg

Tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.10.2002, 22:48 Uhr
~MysticEmpires
Gast


Ich bin ja fan hier von:


C++:

AfxSocketInit(NULL);
hostent *hEnt = 0;
char hostname[20];
gethostname(hostname,20);
hEnt = gethostbyname( hostname );

  if ( hEnt )
  {
        CString m_ipadresse = inet_ntoa( *(LPIN_ADDR)*hEnt->h_addr_list );
        UpdateData(FALSE);
  }

// IP steht in m_ipadresse


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: