Delphi Indy获取所有本地接口信息(跨平台)

Delphi Indy获取所有本地接口信息(跨平台),delphi,cross-platform,indy,indy10,delphi-xe3,Delphi,Cross Platform,Indy,Indy10,Delphi Xe3,我正在将持有网络接口列表的单元转换为跨平台。当前版本使用原始winsock获取系统中每个网络接口的地址、掩码和广播地址 我认为最简单的跨平台方法是使用Indy。我发现AddLocalAddressesToList是一种获取所有接口的IP地址的简单方法,但我无法找到如何获取我需要的其他信息(掩码和广播地址)。 我想我可以计算广播地址,所以它实际上只是一个我无法计算的掩码 仅供参考。这是我找到的用于获取所有接口的IP地址的代码 TIdStack.IncUsage; try GStack.AddL

我正在将持有网络接口列表的单元转换为跨平台。当前版本使用原始winsock获取系统中每个网络接口的地址、掩码和广播地址

我认为最简单的跨平台方法是使用Indy。我发现
AddLocalAddressesToList
是一种获取所有接口的IP地址的简单方法,但我无法找到如何获取我需要的其他信息(掩码和广播地址)。 我想我可以计算广播地址,所以它实际上只是一个我无法计算的掩码

仅供参考。这是我找到的用于获取所有接口的IP地址的代码

TIdStack.IncUsage;
try
  GStack.AddLocalAddressesToList(Memo1.Lines);
finally
  TIdStack.DecUsage;
end;

WinSock不支持报告此类信息。您必须使用特定于操作系统的API。在Windows上,这意味着使用Win32 API
GetAdapterInfo()
GetAdapterAddresses()
函数。在其他平台上,如果可用,可以使用
getifaddrs()
函数

Indy目前不支持您的要求。另外,请注意,此时,
AddLocalAddressesToList()
仅支持大多数平台(包括Windows)上的IPv4地址


对检索本地IPv6地址以及其他信息(如子网掩码)的支持目前正在进行中,但其可用性还没有ETA。

您是对的,它们不是winsock功能,而是我在当前单元中使用的功能。我假设OSX下一定有类似的函数?正如我所说,您可以在支持它的平台上使用
getifaddrs()
函数,其中包括OSX。