Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#11

AW: Re: Eigene IP Adresse ermitteln

  Alt 24. Feb 2016, 16:15
Auf den Zug will/muss ich mal aufspringen:
... Also wenn Du die IP ermitteln möchtest, musst du wissen von welchem Adapter du diese auslesen willst.

Beispiel Notebook:
W-Lan, NIC, ISDN, ADSL, Firewalls, Virenscanner, BlueTooth usw.
Hier kann es möglich sein, dass bis zu 7 IP's (Adaptoren) vorhanden sind.

Also Kurz und einfach, ohne sich genauer mit der Materie zu beschäftigen, wirds nicht gehen!
Wie kann ich das herausfinden?
Ich brauche genau den Adaptor, mit dem ich im lokalen Netz verbunden bin. Folgende Funktion liefert mir zwar mehrere IP. Dass die letzte nicht immer die passende sein muss, ist mir dabei klar. Aber wie löse ich dieses Zuordnungsproblem?
Delphi-Quellcode:
Function GetLocalIP: String;
Type
   TaPInAddr      = Array [0..10] Of PInAddr;
   PaPInAddr      =^TaPInAddr;
Var
   Buffer         : PAnsiChar;
   aWSAData         : TWSAData;
   aHostEnt         : PHostEnt;
   pptr            : PaPInAddr;
   I               : Integer;
Begin
   Result:= '';
   Buffer:= Addr(Result[1]);
   If (WSAStartup($0101, aWSAData) = 0) Then
   Try
      If (GetHostName(buffer, MAX_PATH) <> 0) Then
      Begin
         aHostEnt:= GetHostByName(buffer);
         If (aHostEnt <> nil) Then
         Begin
            pPtr:= PaPInAddr(aHostEnt^.h_addr_list);
            I:= 0;
            While (pPtr^[I] <> nil) Do
            Begin
               Result:= String(inet_ntoa(pptr^[I]^));
               Inc(I);
            End;
         End;
      End;
   Finally
      WSACleanup;
   End;
End;
Ich habe übrigens 3 IP-Adressen: 1x LAN, 1x WLAN, 1x VirtualBox-Adapter. Das Problem dabei ist, dass ich an 2 Laptops mit gleicher Konfiguration unterschiedliche Ergebnisse bekomme. Ich vermute, dass es allein an der Installationsreihenfolge der Treiber liegt.

P.S. Ich finde übrigens diese überall zu findende Funktion nicht so furchtbar, dass man sich nach Java flüchten müsste.
Alex Winzer
  Mit Zitat antworten Zitat