свой IP [Delphi]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by marcos, 7 Dec 2009.

  1. marcos

    marcos New Member

    Joined:
    8 Nov 2009
    Messages:
    111
    Likes Received:
    1
    Reputations:
    -5
    Всем привет! Подскажите как средствами Делфи узнать свой IP
     
  2. OPF_Nik

    OPF_Nik New Member

    Joined:
    6 Nov 2009
    Messages:
    36
    Likes Received:
    3
    Reputations:
    -5
    а что гугол сломалься??

    Code:
    uses
      Winsock;
    
    {...}
    
    function getIPs: Tstrings;
    type
      TaPInAddr = array[0..10] of PInAddr;
      PaPInAddr = ^TaPInAddr;
    var
      phe: PHostEnt;
      pptr: PaPInAddr;
      Buffer: array[0..63] of Char;
      I: Integer;
      GInitData: TWSAData;
    begin
      WSAStartup($101, GInitData);
      Result := TstringList.Create;
      Result.Clear;
      GetHostName(Buffer, SizeOf(Buffer));
      phe := GetHostByName(buffer);
      if phe = nil then Exit;
      pPtr := PaPInAddr(phe^.h_addr_list);
      I    := 0;
      while pPtr^[I] <> nil do
      begin
        Result.Add(inet_ntoa(pptr^[I]^));
        Inc(I);
      end;
      WSACleanup;
    end;
    
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Memo1.Lines := GetIps;
    end;
    
     
    #2 OPF_Nik, 7 Dec 2009
    Last edited by a moderator: 7 Dec 2009
  3. DeaD_MoroZ

    DeaD_MoroZ Banned

    Joined:
    3 Nov 2009
    Messages:
    102
    Likes Received:
    7
    Reputations:
    0
    Code:
    uses
     ..., WinSock;
    
    
    Function showIP : string;
    type
      TaPInAddr = array [0..10] of PInAddr;
      PaPInAddr = ^TaPInAddr;
    var
      phe  : PHostEnt;
      pptr : PaPInAddr;
      Buffer : array [0..63] of char;
      I    : Integer;
      GInitData      : TWSADATA;
    
    Begin
      WSAStartup($101, GInitData);
      Result := '';
      GetHostName(Buffer, SizeOf(Buffer));
      phe :=GetHostByName(buffer);
      if phe = nil then Exit;
      pptr := PaPInAddr(Phe^.h_addr_list);
      I := 0;
      while pptr^[I] <> nil do begin
        Result := Result + StrPas(inet_ntoa(pptr^[I]^)) + '<-->' ;
        Inc(I);
      end;
      WSACleanup;
    End;
     
  4. DeaD_MoroZ

    DeaD_MoroZ Banned

    Joined:
    3 Nov 2009
    Messages:
    102
    Likes Received:
    7
    Reputations:
    0
    пока писал ты уже выложил(= пару минут не успел...\=
     
  5. OPF_Nik

    OPF_Nik New Member

    Joined:
    6 Nov 2009
    Messages:
    36
    Likes Received:
    3
    Reputations:
    -5
    DeaD_MoroZ

    бывает))) а все по тому, что кому то лень самому искать...