我正在将一个持有网络接口列表的单元转换为跨平台。当前版本使用原始winsock来获取系统中每个网络接口的地址、掩码和广播地址。
我认为实现这种跨平台的最简单方法是使用Indy。我发现AddLocalAddressesToList是获取所有接口的IP地址的一种很好的简单方法,但我找不到如何获取所需的其他信息(掩码和广播地址)。我想我可以计算出广播地址,所以它实际上只是我不能计算出的掩码。
仅供参考。这是我找到的用于获取所有接口的IP地址的代码。
TIdStack.IncUsage;
try
GStack.AddLocalAddressesToList(Memo1.Lines);
finally
TIdStack.DecUsage;
end;发布于 2013-03-08 11:32:38
WinSock不支持报告这种信息。您必须使用特定于操作系统的API。在Windows上,这意味着要使用Win32 API GetAdaptersInfo()和GetAdaptersAddresses()函数。在其他平台上,您可以在可用的情况下使用getifaddrs()函数。
Indy目前不支持您所请求的内容。另外,请注意,目前,AddLocalAddressesToList()只支持大多数平台上的IPv4地址。
对检索本地IPv6地址以及子网掩码等其他信息的支持目前正在进行中,但目前还没有关于其可用性的预计值。
https://stackoverflow.com/questions/15285792
复制相似问题