delphi 如何获取计算机的所有IP  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 如何获取计算机的所有IP


如何获取计算机的所有IP

在之前的文章中,我们教了 3 种不同的方法来获取 PC 的 IP,但最近我遇到了一个挑战。


在一个新项目中,我需要开发一个服务器代理以将其安装在具有 4 个网卡的计算机上,其中 2 个连接到不同的 Internet 连接。在上述 Server Proxi 中,他必须让用户选择从哪个连接中通过代理分发互联网。


在我知道如何获取计算机IP的基础上,我开始研究如果我有多个IP,如何获取所有IP。


在Delphi 中默认安装的Indy组件中,我们有大量处理各种连接的组件和单元。这些单元之一是IdStack,它具有TIdStack类,我们将使用它来获取设备的所有 IP。


获取PC所有IP的函数如下:


Uses IdStack, IdGlobal;

 

procedure GetAllIP();

var

  LList: TIdStackLocalAddressList;

  LAddr: TIdStackLocalAddress;

begin

  LList := TIdStackLocalAddressList.Create;

  TIdStack.IncUsage;

  try

    GStack.GetLocalAddressList(LList);

    for var I := 0 to LList.Count - 1 do

    begin

      LAddr := LList[I];

      if LAddr.IPVersion = TIdIPVersion.Id_IPv4 then

        ComboBox1.Items.Add(LAddr.IPAddress);

    end;

  finally

    TIdStack.DecUsage;

  end;

end;

在上面的示例中,我们提取所有 IP 并将它们保存在TComboBox 中,以便用户可以选择一个。


我们澄清此函数提取所有 IP 版本 4,如下行所示:


if LAddr.IPVersion = TIdIPVersion.Id_IPv4 then

  ComboBox1.Items.Add(LAddr.IPAddress);

如果我们想要提取所有 IP 版本 6,我们将更改以下行:


if LAddr.IPVersion = TIdIPVersion.Id_IPv6 then

  ComboBox1.Items.Add(LAddr.IPAddress);

如果我们不放条件,它会提取所有IP,不区分版本。



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.039904117584229 seconds