如何使用Indy获取适配器名称?

时间:2014-03-27 11:40:21

标签: delphi indy indy10

我可以使用indy:

使用此代码获取所有本地IP地址
uses IdStack;

var
  IPs: TStringList;
begin
  IPs := TStringList.Create;
  try
    GStack.AddLocalAddressesToList(IPs);
    listbox_localIPs.Items.Assign(IPs);  //My listbox
  finally
    IPs.Free;
  end;
end;

如何为Indy找到的每个IP获取适配器名称

2 个答案:

答案 0 :(得分:3)

Indy没有提供此类信息。您必须使用WinApi(GetAdaptersInfoGetAdaptersAddresses)或WMI(Win32_NetworkAdapter)。

答案 1 :(得分:2)

Indy主要只是不暴露适配器信息的标准套接字API的包装器。 AddLocalAddressesToList()使用特定于平台的API来获取本地IP,其中一些API可能会报告适配器名称(或公开通过其他API查找这些名称的方法),但AddLocalAddressesToList()只填充{{} 1}}使用IP地址字符串,因此即使它想要也无法报告适配器名称。

据说,AddLocalAddressesToList() has recently been deprecated支持新的TStrings方法,该方法返回包含附加信息(IP版本,子网掩码)的GetLocalAddressList() - 派生对象的集合。因此,未来版本可能会添加适配器名称,但这仍然可以在特定于平台的基础上实现,因此可能并非在所有平台上都可用。 Indy本身不需要适配器名称,因此您最好直接使用特定于平台的API来获取所需的任何适配器信息。