如题,最好说出用法,谢谢!

解决方案 »

  1.   

    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.
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      IpList:TStrings;
      i:integer;
    begin
      IpList:=LocalIPList;
      for i:=0 to IPlist.Count-1 do
      begin
        memo1.Lines.Add(iplist[i]);
      end;
    end;单元
    WSocket
      

  3.   

    to xdf_hubei: LocalIPList从哪儿得来的?
    to bluemeteor(挂月):研究中
    谢谢!
      

  4.   

    to bluemeteor(挂月):第一段正确,第二段还没看懂,谢谢!
      

  5.   

    你告诉我E-mail 我发一个例子工程给你看!
    有问题请发信息到我的E-mail:[email protected]
      

  6.   

    简单一点的:
    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($101,GInitData);Result:=TStringList.Create;Result.Clear;GetHostName(Buffer,SizeOf(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;
      

  7.   

    我的E-mail是[email protected],谢谢!
      

  8.   

    Indy Misc面板IdIPWatch组件 设active为true;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      showmessage(IdIPWatch1.LocalIP);
    end;
    即可。
      

  9.   

    最简单的。
    在DELPHI的Indy Misc控件中选取IdIPWatch。就可以了。它里面有一个函数可以显示本地IP。
    //eg.----------------------------------------------
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    edit1.Text:=IdIPWatch1.LocalIP;
    end;
    //----------------------------------------------
    最好还是自己写代码吧。
      

  10.   

    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.Button4Click(Sender: TObject);
    var
     result:string;
    begin
      result:=localip;
      showmessage('本机ip地址为: '+result);
    end;
      

  11.   

    procedure TForm44.Button2Click(Sender: TObject);
    var cIP:string;     
        hent:phostent;
        ipaddr:tinaddr;
        WSAData:TWSAData;
    begin
       WSAStartup(2,WSAData);
       HEnt:=gethostbyname(PChar(edit1.Text));
       with ipaddr,hent^ do
       begin
        cIP:=format('%d.%d.%d.%d',[byte(h_addr^[0]),byte(h_addr^[1]),byte(h_addr^[2]),byte(h_addr^[3])]);
        label1.caption:=cIP;
       end;
    end;
      

  12.   

    如果你是用Delphi6,在FastNet面版中的大多数控件都提供查LocalIP方法看本机IP的方法,例如:NMSMTP、NMPOP3等等控件,比如你放上一个用NMSMTP控件和一个按钮,一个Edit控件,在按钮OnClick事件中写上如下代码就可以了:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Edit1.Text:=NMSMTP1.LocalIP;
    end;
      

  13.   

    给你一个最简单的,要用到winsock单元。procedure TForm1.Button1Click(Sender: TObject);
    var
      wVersion: Word;
      sData: TWSAData;
      P: PHostEnt;
      S: array[0..128]of char;
    begin
      wVersion := MakeWord(1,1);
      WSAStartup(wVersion,sData);
      try
        gethostname(@S,128);
        P:=gethostbyname(@S);
        edit1.text:=inet_ntoa(PinAddr(P^.h_addr_list^)^);
      finally
        WSACleanup;
      end;
    end;
      

  14.   

    如果嫌上面方法太不专业,而一楼的仁兄的代码你又看不懂,你还可以在程序前面加上下面这段代码,你不需要看懂它,调用ggLocalIP函数就行,不需要参数:
    function ggLocalIP : 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;
    要查IP地址时,直接调用,比如Edit1.Text:=ggLocalIP;
      

  15.   

    : dolemin(骏驰) ( ) 信誉:100  2003-2-25 10:42:13  得分:0   
    to xdf_hubei: LocalIPList从哪儿得来的?
    to bluemeteor(挂月):研究中
    谢谢!LocalIPList: WSocket单元里面有的啊一般用D5做网络都有SOCKET2的接口单元