当本机连到Internet时,怎么样得到本机的Internet地址呢,请指教

解决方案 »

  1.   

    delphi7 -> indy Misc -> IdIPWatch 控件IdIPWatch1.LocalIP  就是本机IP
      

  2.   

    楼上说得对,Indy控件大部分都有LocalIP的属性
      

  3.   

    uses
    Winsock;function GetIPAddress : string;
    var
      Sdata : TWSAData;
      ErrorCode: Integer;
      HEnt: PHostEnt;
      IPAddr : TInAddr;
      CName : PChar;
      iSize : longword;
    begin
      isize := MAX_COMPUTERNAME_LENGTH;
      GetMem(CName, iSize);
      Try
        GetComputerName(CName, iSize);
        ErrorCode := WSAStartup($0101, SData);
        if ErrorCode = 0 then
          begin
            Try
              HEnt := GetHostbyName(CName);
              if HEnt <> nil then
                begin
                  with IPAddr, HEnt^ do
                    begin
                      S_un_b.s_b1 := h_addr^[0];
                      S_un_b.s_b2 := h_addr^[1];
                      S_un_b.s_b3 := h_addr^[2];
                      S_un_b.s_b4 := h_addr^[3];
                    end;
                  Result := inet_ntoa(IPAddr);
                end;
            finally
              ErrorCode := WSACleanup;
            end;
          end;
      finally
        FreeMem(CName);
      end;
    end;//调用:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Edit1.Text:=GetIPAddress;
    end;
      

  4.   

    不好意思.看错题目了。下面这个才是取连接integer时的IP地址.uses
    Winsock;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;//调用:
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Edit1.Text:=LocalIP;
    end;
      

  5.   

    1.开始->运行->cmd->ipconfig
      用winexec或shellexec应该能调用
    2.记得好象有gethostip这样的方法可调用,
      你用indy的主件,比如,idudpclient看看,也许能找到。