怎样得到IP

解决方案 »

  1.   

    用TNMHTTP控件可以取。
    NMHTTP1.LocalIP;
      

  2.   

    function LocalIP : 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:=StrPas(inet_ntoa(pptr^[I]^)); 
          Inc(I); 
        end; 
        WSACleanup; 
    end;
    uses Winsock;
    ...
    function getIPs: TStrings;typeTaPInAddr = Array[0..10] of PInAddr;PaPInAddr = ^TaPInAddr;varphe: PHostEnt;pptr: PaPInAddr;Buffer: Array[0..63] of Char;I: Integer;GInitData: TWSAData;beginWSAStartup($101GInitData);Result:=TStringList.Create;Result.Clear;GetHostName(BufferSizeOf(Buffer));phe := GetHostByName(buffer);if phe = nil thenbeginExit;end;pPtr := PaPInAddr(phe^.h_addr_list);I := 0;while pPtr^[I] <> nil dobeginResult.Add(inet_ntoa(pptr^[I]^));Inc(I);end;WSACleanup;end; procedure TForm1.Button1Click(Sender: TObject);beginmemo1.Lines:=GetIps;end;
     
     
      

  3.   

    function LocalIP : 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:=StrPas(inet_ntoa(pptr^[I]^)); 
          Inc(I); 
        end; 
        WSACleanup; 
    end
    uses Winsock;
    ...
    function getIPs: TStrings;typeTaPInAddr = Array[0..10] of PInAddr;PaPInAddr = ^TaPInAddr;varphe: PHostEnt;pptr: PaPInAddr;Buffer: Array[0..63] of Char;I: Integer;GInitData: TWSAData;beginWSAStartup($101GInitData);Result:=TStringList.Create;Result.Clear;GetHostName(BufferSizeOf(Buffer));phe := GetHostByName(buffer);if phe = nil thenbeginExit;end;pPtr := PaPInAddr(phe^.h_addr_list);I := 0;while pPtr^[I] <> nil dobeginResult.Add(inet_ntoa(pptr^[I]^));Inc(I);end;WSACleanup;end; procedure TForm1.Button1Click(Sender: TObject);beginmemo1.Lines:=GetIps;end;