zoukankan      html  css  js  c++  java
  • Delphi获取本机所有的IP

    安装Indy

    uses  IdStackWindows;

    var
       Isw:TIdStackWindows;
       slist:TStringList;
    begin
      Isw:=TIdStackWindows.Create;
      slist:=TStringList.Create;
      try
        Isw.AddLocalAddressesToList(slist);//这个方法可以取出IP
      finally
        FreeAndNil(Isw);
        FreeAndNil(slist);
      end;
    end;

     另外一种方法:

      

    var
      sck: TIdStackWindows;
      address: TIdStackLocalAddressList;
    begin
      sck := TIdStackWindows.Create;
      address := TIdStackLocalAddressList.Create;
      try
        sck.GetLocalAddressList(address);
        for i := 0 to address.Count - 1 do
        begin
          if address[i].IPVersion in [Id_IPv4] then  //过滤IP_V6
          begin
              Item.Caption := address[i].IPAddress; //item是其他变量
          end;
        end;
      finally
        FreeAndNil(sck);
        FreeAndNil(address);
      end;
    end

    XE10.x 使用正常

    D2010

    function GetLocalIP(Multi: Boolean = False): string;
    type
      PPInAddr = ^PInAddr; //取本机IP,可取多个(分行列出)
    var
      wsaData: TWSAData;
      HostInfo: PHostEnt;
      HostName: array[0..255] of Char;
      Addr: PPInAddr;
    begin
      Result := '';
      if WSAStartup($0101, wsaData) <> 0 then
        exit;
      try
        if gethostname(HostName, SizeOf(HostName)) <> 0 then Exit;
        
        HostInfo := gethostbyname(HostName);
        if HostInfo = nil then Exit;
        
        Addr := Pointer(HostInfo^.h_addr_list);
        if (Addr = nil) or (Addr^ = nil) then Exit;
        
        Result := StrPas(inet_ntoa(Addr^^));
        inc(Addr);
        while (Addr^ <> nil) and Multi do begin
          Result := Result + ^M^J+ StrPas(inet_ntoa(Addr^^));
          inc(Addr);
        end;
      finally
        WSACleanup;
      end;
    end;
  • 相关阅读:
    body标签中l的相关标签
    PostgreSQL&PostGIS完全安装
    PostgreSQL常用函数
    Linux 路由 学习笔记 之一 相关的数据结构
    OSPF学习中的问题
    对TCP重传的进一步认识
    TCP 接收窗口自动调节
    [转]struct 用法深入探索
    Memcached缓存瓶颈分析
    C++的try_catch异常
  • 原文地址:https://www.cnblogs.com/Master-Qi/p/10675743.html
Copyright © 2011-2022 走看看