kostenloser Webspace werbefrei: lima-city


Mit Delphi Internet-ip rausbekommen

lima-cityForumProgrammiersprachenDelphi & Pascal

  1. Autor dieses Themas

    k**********k

    Hallo,

    Wie kann ich mit Delphi meine internet ip rausbekommen?

    Ich habe mir schon überlegt das sich das mit einer PHP seite kopple ,welche die internet-ip angibt(-> http://ketchupfleck.lima-city.de/ip.php ).

    1) Aber wie kann ich diese erste zeile auslesen??

    2) lässt sich das nicht einfacher realisiern??


    Info: Ich brauche die internet-ip um eine Verbindung mittels Winsocks herzustellen.

    mfg Ketchup
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Also: Hab mal auf CodeGear (Borland Developer Network) nachgeschaut:


    The following code is not dependent on Windows 2000 or Active directory, will
    list all IP addresses of the interfaces of the (IPV4) host it runs on, and
    is portable to Linux as it uses standard socket calls:



    uses WinSock;

    ....

    { lists all IP-address assigned to this host }
    const
    MAXHOSTNAMELEN = 256;
    var
    HostName: string;
    pHE: PHostEnt;
    pAddr: ^PChar;
    begin
    { get hostname }
    SetLength(HostName, MAXHOSTNAMELEN);
    GetHostName(Pointer(HostName), MAXHOSTNAMELEN);
    SetLength(HostName, StrLen(Pointer(HostName)));
    { host name }
    ShowMessage(HostName);
    { get list of ip adresses }
    pHE := GetHostByName(Pointer(HostName));
    { host name again}
    ShowMessage(pHE.h_name);
    { lenght of an IP address, 4 = IPV4 }
    ShowMessage(IntToStr(pHE.h_length));
    { list all adresses }
    pAddr := Pointer(pHE.h_addr);
    while PChar(pAddr^) <> Nil do
    begin
    ShowMessage(inet_ntoa(in_addr(pAddr^)));
    inc(pAddr);
    end;
    end;


    Und ein anderes Code Snippet:

    Sollte lt. Author auch hinter einer Firewall funktionieren:


    function GetWanIP(var WANIP: string): Boolean;
    var
    InitData : TWSADATA;
    SockDes : TSocket;
    SockAddr : TSockAddr;
    NumRead,
    TotalRead,
    Size,
    IPPos,
    Len : Integer;
    SktSet : TFDSet;
    TV : TimeVal;
    Buffer : string;
    begin
    Result := False;;
    if WSAStartup($0101, InitData) <> 0 then
    Exit;
    try
    try
    SockDes := Socket(AF_INET, SOCK_STREAM, 6);
    if SockDes = INVALID_SOCKET then
    Exit;
    SockAddr.sin_family := AF_INET;
    SockAddr.sin_port := htons(80);
    SockAddr.sin_addr.s_addr := inet_addr(PChar(GetIPAddress(
    'www.whatismyip.com')));
    if Connect(SockDes, SockAddr, SizeOf(SockAddr)) = SOCKET_ERROR then
    Exit;
    Buffer := 'GET / HTTP/1.0'#13#10'Host: www.whatismyip.com'#13#10#13#10;
    if Send(SockDes, Buffer[1], Length(Buffer), 0) = SOCKET_ERROR then
    Exit;
    SetLength(WANIP, 10240);
    TotalRead := 0;
    FD_ZERO(SktSet);
    FD_SET(SockDes, SktSet);
    TV.tv_sec := 10;
    TV.tv_usec := 0;
    Size := SizeOf(SockAddr);
    while Select(0, @SktSet, nil, nil, @TV) > 0 do
    begin
    NumRead := RecvFrom(SockDes, WANIP[1], Length(WANIP), 0,
    SockAddr, Size);
    if NumRead <= 0 then
    Break;
    SetLength(WANIP, 10240 + NumRead);
    Inc(TotalRead, NumRead);
    end;
    SetLength(WANIP, TotalRead);
    if TotalRead <> 0 then
    begin
    try
    Len := (Pos('</TITLE>', WANIP)) - (Pos('<TITLE>', WANIP) + 24);
    WANIP := Copy(WANIP, Pos('<TITLE>', WANIP) + 24, Len);
    SetLength(Buffer, Len);
    except
    on E: Exception do
    Exit;
    end;
    if WANIP <> '' then
    Result := True;
    end;
    finally
    CloseSocket(SockDes);
    end;
    finally
    WSACleanup;
    end;
    end;


    Benutzung in Delphi z.B:

    if GetWanIP(MyIP) then
    ShowMessage(MyIP);
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!