返回了不同的适配器列表
我想知道为什么GetIpAddrTable
返回的网络适配器比GetAdaptersAddresses
少的根本原因。候选原因如下(根据答案更新)。
候选原因
GetAdaptersAddresses
中显示。在此示例中,我有一个适配器带有IPv4和IPv6本地链接IP地址的情况,该适配器地址未显示在GetIpAddrTable的输出中。 背景
我正在研究运行Windows 7 64位家庭高级版(版本:6.1.7601 Service Pack 1 Build 7601)的特定Dell笔记本电脑上
GetIpAddrTable
函数的问题。有问题的系统无法通过GetIpAddrTable
检测到某些网络适配器。诊断结果如下。谁能解释为什么我可能会从这两个函数中看到如此截然不同的结果?我们已经使用
GetIpAddrTable
近两年了,没有任何问题。文件检查
GetIpAddrTable
的documentation表示链接状态检测可能会导致XP出现问题,但是并没有给出适配器根本不显示的任何原因。似乎没有包含虚拟适配器,但我们的设备不是虚拟适配器(它是USB以太网)。On Windows Server 2008 and Windows Vista, the IPv4 addresses returned by the GetIpAddrTable function are not affected by the media sensing capability of the TCP/IP stack on a local computer. The GetIpAddrTable function returns only valid IPv4 addresses.
在此系统上进行的测试中,我们具有有效的连接,但仅由
GetAdaptersAddresses
报告,而不由GetIpAddrTable
报告。我怀疑Windows认为适配器无效,但是我不确定要测试什么以证实这一理论。数据包往返于设备,只是在IPv4地址映射表中不可见。实现细节
GetIpAddrTable结果
通常,我们希望看到两个或三个网络适配器,而不会看到环回适配器。也许此列表中存在127.0.0.1是问题的一部分-在正常运行的计算机上通常不会观察到。
GetAdaptersAddresses结果
我已经按返回顺序列出了此函数返回的适配器。强调了第一次调用时匹配的适配器。 ipconfig输出中唯一不存在的适配器是粗体。
ipconfig/所有结果
请注意,软件回送适配器是唯一不存在的适配器-表示ipconfig在内部使用第二个功能或类似接口(interface)。
交叉引用结果
看起来
ipconfig /all
命令返回的数据与GetAdaptersAddresses
相同,但软件环回接口(interface)除外。我目前正在考虑切换我们的库以使用GetAdaptersAddresses
来解决此问题,但是我担心GetIpAddrTable
为什么不返回预期结果。预先感谢您的任何投入!相关问题
最佳答案
GetIpAddrTable()
仅返回IPv4接口(interface)。GetAdaptersAddresses()
返回IPv4和/或IPv6适配器,并且单个适配器可以分配有多个IP地址。
您正在比较苹果和橙子,想知道为什么苹果比橙子少。
关于windows - GetIpAddrTable返回的适配器列表与GetAdaptersAddresses不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13573007/