如何获取计算机的所有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