如题,请给出代码,谢谢!

解决方案 »

  1.   

    可放一个IDIPWatch控件(该控件在Indy Misc页)
    var 
      myIP:String;
    begin
      IDIPWatch1.Active:=True;
      myIP:=IDIPWatch1.LocalIP;   //获得IP地址
    end;也有写代码获得I地址的,楼主可在CSDN里搜索搜索...
      

  2.   

    function Get_compuerName: string;
    var
      str_ComputerName: string;
      wVersionRequested: WORD; // uses Winsock
      wsaData: TWSAData;
      p: PHostEnt;
      s: array[0..128] of char;
      p2: pchar;
    begin
      result := '';
      wVersionRequested := MAKEWORD(1, 1);
      WSAStartup(wVersionRequested, wsaData);
      GetHostName(@s, 128);
      p := GetHostByName(@s);
      str_ComputerName := p^.h_Name;
      result := str_ComputerName;
      WSACleanup;
    end;function GetIP: string;
    var
      str_LocalIP: string;
      wVersionRequested: WORD; // uses Winsock
      wsaData: TWSAData;
      p: PHostEnt;
      s: array[0..128] of char;
      p2: pchar;
    begin
      result := ''; //  SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM DUAL
      wVersionRequested := MAKEWORD(1, 1);
      WSAStartup(wVersionRequested, wsaData);
      GetHostName(@s, 128);
      p := GetHostByName(@s);
      p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
      str_LocalIP := p2;
      result := str_LocalIP;
    end;
      

  3.   

    转贴的:取得本机IP
    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.   

    Function GetLocalIp(InternetIP:boolean):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;
        IP: String;
    begin
        Screen.Cursor := crHourGlass;
        try
          WSAStartup($101, GInitData);
          IP:='0.0.0.0';
          GetHostName(Buffer, SizeOf(Buffer));
          phe := GetHostByName(buffer);
          if phe = nil then
          begin
            //ShowMessage(IP);
            Result:=IP;
            Exit;
          end;
          pPtr := PaPInAddr(phe^.h_addr_list);
          if InternetIP then
            begin
              I := 0;
              while pPtr^[I] <> nil do
                begin
                  IP := inet_ntoa(pptr^[I]^);
                  Inc(I);
                end;
            end
          else
            IP := inet_ntoa(pptr^[0]^);
          WSACleanup;
          Result:=IP;
        finally
          Screen.Cursor := crDefault;
        end;
    end;
      

  5.   

    楼上几位的方法也可试一下:
    function pGetCurIP : 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;
      

  6.   

    请问 TWSAData 包含在什么单元里?
      

  7.   

    获取本机用户名和IP地址
    1、在uses单元添加Sockets引用;2、添加一个标签和一个按钮;3、代码:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    tp:TTcpclient;
    strname,straddr:string;
    begin
    tp:=TTcpclient.create(self);
    tp.close;
    tp.open;
    strname:=tp.LocalHostName;
    straddr:=tp.LocalHostAddr;
    label1.caption:=strname+' IP: '+straddr;
    tp.close;
    end;
      

  8.   

    IP地址:
    添加一个IdIPWatch1控件.
    IdIPWatch1.LocalIP返回ip地址。计算机名:
    getcomputername(computername,255);
      

  9.   

    改一下wasi(小铁) 的代码unit UnitTools;interfaceuses
      Windows, Winsock;function GetIP: string;
    function Get_compuerName: string;implementation
    // Get Local Machine IP
    // Use Unit
    //    Windows, Winsock;
    // Return Machine's IP String
    function GetIP: string;
    var
      p: PHostEnt;
      s: array[0..128] of char;
    begin
      result := '';
      GetHostName(@s, 128);
      p := GetHostByName(@s);
      result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
    end;
    // Get Local Machine Name
    // Use Unit
    //    Windows;
    // Return Machine's Name String
    function Get_compuerName: string;
    var
      str_ComputerName: string;
      p: PHostEnt;
      s: array[0..128] of char;
    begin
      result := '';
      GetHostName(@s, 128);
      p := GetHostByName(@s);
      str_ComputerName := p^.h_Name;
      result := str_ComputerName;
    end;end.