0

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

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

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

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

1 回答 1

2

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

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

对检索本地 IPv6 地址以及子网掩码等其他信息的支持目前正在开发中,但尚无关于其可用性的 ETA。

于 2013-03-08T03:32:37.733 回答