我可以使用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获取适配器名称?
答案 0 :(得分:3)
Indy没有提供此类信息。您必须使用WinApi(GetAdaptersInfo
,GetAdaptersAddresses
)或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来获取所需的任何适配器信息。