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 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; end; 
注意,需要use WinSock Unit.

解决方案 »

  1.   

    通过机器名得到IP地址 
     
    function procedure TForm1.nametoip(name:string):string;varWSAData: TWSAData;HostEnt: PHostEnt;beginresult:='';WSAStartup(2, WSAData);HostEnt := gethostbyname(PChar(name));if HostEnt <> nil thenbeginwith HostEnt^ doresult:= Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);end;WSACleanup;end; 
      

  2.   


    This function returns the local IP Address: 
    uses
      WinSock, SysUtils;function GetLocalIpAddress : string;
    type
      pu_long = ^u_long;
    var
      varTWSAData : TWSAData;
      varPHostEnt : PHostEnt;
      varTInAddr : TInAddr;
      namebuf : Array[0..255] of char;
      fd : integer;
      rc : integer;
    begin
      result := '';
      rc := WSAStartup($101,varTWSAData);
      if rc <> 0 then
        raise ESockUtilErr.CreateFmt( 'WSA Startup error: %d',[rc] )
      else
      begin
        gethostname(namebuf,sizeof(namebuf));
        varPHostEnt := gethostbyname(namebuf);
        varTInAddr.S_addr := u_long(pu_long(varPHostEnt^.h_addr_list^)^);
        result := inet_ntoa(varTInAddr);
      end;
      fd := WinSock.Socket( PF_INET, SOCK_STREAM, 0 );
      if fd = INVALID_SOCKET then
        raise ESockUtilErr.CreateFmt( '%d %d: Invalid socket',[fd,WSAGetLastError] );
      WSACleanup;
    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;
    ========================================
    program get_ip;
    uses
      winsock,sysutils;
    VAR
      ch : ARRAY[1..32] OF Char;
      i : Integer;
      WSData: TWSAData;
      MyHost: PHostEnt;
    begin
      IF WSAstartup(2,wsdata)<>0 THEN
        BEGIN
          Writeln('can''t start Winsock: Error ',WSAGetLastError);
          Halt(2);
        END;
      try
        IF getHostName(@ch[1],32)<>0 THEN
          BEGIN
            Writeln('getHostName failed');
            Halt(3);
          END;
      except
        Writeln('getHostName failed');
        halt(3);
      end;
      MyHost:=GetHostByName(@ch[1]);
      IF MyHost=NIL THEN
        BEGIN
          Writeln(GetHostName('+StrPas(@ch[1])+') failed : Error
    '+IntToStr(WSAGetLastError));
          Halt(4);
        END
      ELSE
        BEGIN
            Write('address ');
             FOR i:=1 TO 4 DO
                BEGIN
                  Write(Ord(MyHost.h_addr^[i-1]));
                  IF i<4 THEN
    then     write('.')
                  ELSE
                    writeln;
                END;
       END;
    end.
    ===========================================
      

  4.   

    你可以在菜单-->程序-->附件-->命令提示符中键入IpConfig
      

  5.   

    有意思,我还有一个通过IP地址得到机器名的程序代码
    procedure TForm1.Button1Click(Sender: TObject); function IPAddrToName(IPAddr : String): String;
      var
        SockAddrIn: TSockAddrIn;
        HostEnt: PHostEnt;
        WSAData: TWSAData;
      begin
        WSAStartup($101, WSAData);
        SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
        HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
        if HostEnt<>nil then
        begin
          result:=StrPas(Hostent^.h_name)
        end
        else
        begin
          result:='';
        end;
      end;
    var
    Name:string;
    begin
       Name:=INPutbox('输入对方主机IP','主机IP地址:','');
       showmessage(IPaddrtoName(Name));
    end;
      

  6.   

    在给你一个通过IP得到机器名的代码
    procedure TForm1.Button1Click(Sender: TObject); function IPAddrToName(IPAddr : String): String;
      var
        SockAddrIn: TSockAddrIn;
        HostEnt: PHostEnt;
        WSAData: TWSAData;
      begin
        WSAStartup($101, WSAData);
        SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
        HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
        if HostEnt<>nil then
        begin
          result:=StrPas(Hostent^.h_name)
        end
        else
        begin
          result:='';
        end;
      end;
    var
    Name:string;
    begin
       Name:=INPutbox('输入对方主机IP','主机IP地址:','');
       showmessage(IPaddrtoName(Name));
    end;
      

  7.   

    你可以在菜单-->程序-->附件-->命令提示符中键入IpConfig