Announcement

Collapse
No announcement yet.

Wie kann ich die eigene IP - Adresse ermitteln ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie kann ich die eigene IP - Adresse ermitteln ?

    Hallo,

    gibt es eine Möglichkeit, bei installiertem TCP / IP Protokoll die eigene IP Adresse durch einen API - Befehl zu ermitteln ?

    Danke !

    Ciao Torsten

  • #2
    Hallo,
    mit der folgenden Funktion ist es möglich die eigene IP-Adresse auszulesen:

    function GetIP: String;
    resourcestring
    cTxtIP = '%d.%d.%d.%d';
    var
    rSockVer : WordRec;
    szHostName : array[0..255] of Char;
    pHE : PHostEnt;
    aWSAData : TWSAData;
    sTxt : String;
    begin
    // IP-Adresse des Rechners
    rSockVer.Hi := 1;
    rSockVer.Lo := 1;
    // WinSock Version 1.1 initialisieren
    WSAStartup(Word(rSockVer), aWSAData );
    try
    FillChar(szHostName, SizeOf(szHostName), #0);
    GetHostName(szHostName, SizeOf(szHostName));
    pHE := GetHostByName(szHostName);
    if Assigned(pHE)
    then with pHE^ do
    sTxt := Format(cTxtIP,
    [Byte(h_addr^[0]), Byte(h_addr^[1]),
    Byte(h_addr^[2]), Byte(h_addr^[3])]);
    finally
    WSACleanup;
    end;
    result := sTxt;
    end;

    bye ;c

    Comment


    • #3
      <p>Hallo <b>heahnen</b>,<br>
      <br>
      kannst Du mir 'mal verklickern, welche Units zu Deinem Beispiel<br>
      benötigt werden?<br>
      <br>
      Gruß Thomas<br>
      </p&gt

      Comment


      • #4
        na aber immer doch ;c)

        uses
        WinSock;

        by

        Comment


        • #5
          <p>Hallo haehnen,<br>
          <br>
          danke für die prompte Antwort.<br>
          Als Abfallprodukt Deines Beispiels wird sogar noch der Computername<br>und den vollen Domain-Namen.<br>
          <br>
          Gruß<br>
          Thomas<br></p&gt

          Comment


          • #6
            <p>Hallo haehnen,<br>
            <br>
            danke für die promte Antwort.<br>
            <br>
            Thomas<br></p&gt

            Comment


            • #7
              Hier meine Variante + Winsock-Info, so was braucht man immer
              mal..
              <pre>
              uses Winsock;
              {$R *.DFM}

              procedure TForm1.Button1Click(Sender: TObject);
              var p : PHostEnt;
              s : array[0..128] of char;
              p2 : PChar;
              wsd:TWSADATA;
              res,wsrequested:Integer;
              begin

              wsRequested := MAKEWORD(1,1);
              res := WSAStartUp(wsRequested, wsd);
              if res <> 0 then Exit;
              { Winsock Info's}
              Memo1.Lines.Add('Init Winsock erfogreich!');
              Memo1.Lines.Add(Format('%s',[StrPas(wsd.szDescription)]));
              Memo1.Lines.Add(Format('ws_Version: %d.%d',[LOBYTE(wsd.wVersion),HIBYTE(wsd.wVersion)]));
              Memo1.Lines.Add(Format('wsHVersion: %d.%d',[LOBYTE(wsd.wHighVersion),HIBYTE(wsd.wHighVersion)]));
              Memo1.Lines.Add(Format('Status : %s',[StrPas(wsd.szSystemStatus)]));
              {Computer Name}
              GetHostName(@s, 128);
              p := GetHostByName(@s);
              {IpAddress}
              p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
              Memo1.Lines.Add(p^.h_name);
              Memo1.Lines.Add('Meine IP-Adr.: '+p2);
              WSACleanup;
              end;

              </pre&gt

              Comment

              Working...
              X