如何获取本机的IP  要在INTERNET上的那个

解决方案 »

  1.   

    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
    result:='';
    wsastartup($101,ginitdata);
    try
    gethostname(buffer,sizeof(buffer));
     phe:=gethostbyname(buffer);
     if phe<>nil then
     begin
     pptr:=papinaddr(phe^.h_addr_list);
     I:=0;
     while pptr^[i]<>nil do
     begin
     result:=strpas(inet_ntoa(pptr^[i]^));
     inc(i);
     end;
     end;
     finally
     wsacleanup;
     end;
     end;
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
     edtIP.Text:=localIP; 
    end;
      

  2.   

    新建一Project1,在form1中添加控件statusbar1(Win32页)和控件IdIPWatch1(Indy Misc页)。接着设置好控件属性:在statusbar1的panels中添加0-TStatusPanel和1-TStatusPanel两项;IdIPWatch1的HistoryEnabled的属性设为False。
    在TForm1.FormCreate(Sender: TObject)中加入以下代码:statusbar1.Panels[1].Text:=IdIPWatch1.LocalIP;
      
    若IdIPWatch1的HistoryEnabled的属性设为True,则会在程序退出时,自动生成一个文件(文件名为HistoryFileName属性设定的值),记录当前的IP地址。
      

  3.   

    rouqing(*柔情似水&冷酷到底&长发飘飘*) :
                        谢谢你的回复,可你给的那个函数的结果怎么和QQ上的结果不一样呢  你查的是局域网的么   我要INTERNET上的
      

  4.   

    转别人
    {=================================================================
      功  能: 返回本机的局域网Ip地址
      参  数: 无
      返回值: 成功:  True, 并填充LocalIp   失败:  False
      备 注:
      版 本:
         1.0  2002/10/02 21:05:00
    =================================================================}
    function GetLocalIP(var LocalIp: string): Boolean;
    var
        HostEnt: PHostEnt;
        Ip: string;
        addr: pchar;
        Buffer: array [0..63] of char;
        GInitData: TWSADATA;
    begin
      Result := False;
      try
        WSAStartup(2, GInitData);
        GetHostName(Buffer, SizeOf(Buffer));
        HostEnt := GetHostByName(buffer);
        if HostEnt = nil then Exit;
        addr := HostEnt^.h_addr_list^;
        ip := Format('%d.%d.%d.%d', [byte(addr [0]),
              byte (addr [1]), byte (addr [2]), byte (addr [3])]);
        LocalIp := Ip;
        Result := True;
      finally
        WSACleanup;
      end;
    end;
      

  5.   

    ??? 局域网的IP在INTERNET上是唯一的么    在INTERNET上用局域网的ip能找到那台计算机么