我想知道为什么GetIpAddrTable
会返回比GetAdaptersAddresses
更少的网络适配器的根本原因。考生原因如下(每个答案更新)。
GetAdaptersAddresses
。在这个例子中,我有一个适配器,其中包含IPv4和IPv6的链接本地IP地址,这些地址未显示在GetIpAddrTable的输出中。我正在研究运行Windows 7 64位家庭高级版(版本:6.1.7601 Service Pack 1 Build 7601)的特定戴尔笔记本电脑上GetIpAddrTable
功能的问题。有问题的系统无法通过GetIpAddrTable
检测某些网络适配器。诊断结果如下。
任何人都可以解释为什么我会看到这两种功能出现如此截然不同的结果?我们已经使用GetIpAddrTable
近两年没有任何问题。
GetIpAddrTable
的{{3}}表示链接状态检测可能会导致XP出现问题,但它没有说明适配器根本无法显示的任何原因。 似乎不包含虚拟适配器,但我们的设备不是虚拟适配器(它是USB以太网)。
在Windows Server 2008和Windows Vista上,返回了IPv4地址 通过GetIpAddrTable函数不受媒体感知的影响 本地计算机上TCP / IP堆栈的功能。 GetIpAddrTable function仅返回有效的IPv4地址。
在我在此系统上进行的测试中,我们有一个有效的连接,但它仅由GetAdaptersAddresses
报告,而不是GetIpAddrTable
。我怀疑Windows认为适配器无效,但我不确定要测试什么来证实这个理论。数据包流入和流出设备,只是在IPv4地址映射表中不可见。
通常我们希望看到两个或三个网络适配器,而不是环回适配器。也许这个列表中存在127.0.0.1是问题的一部分 - 通常不会在工作机器上观察到。
我已经按照返回的顺序列出了此函数返回的适配器。来自第一个呼叫的匹配适配器强调。 ipconfig输出中不存在的唯一适配器是粗体。
请注意,软件环回适配器是唯一不存在的适配器 - 这表明ipconfig在内部使用第二个函数或类似的接口。
ipconfig /all
命令似乎返回与GetAdaptersAddresses
相同的数据,但软件环回接口除外。我目前正在考虑将我们的库切换为使用GetAdaptersAddresses
来插入此问题,但我担心为什么GetIpAddrTable
没有返回预期的结果。提前感谢任何输入!
答案 0 :(得分:1)
GetIpAddrTable()
仅返回IPv4接口。
GetAdaptersAddresses()
返回IPv4和/或IPv6适配器,单个适配器可以分配多个IP地址。
您正在比较苹果和橙子,并想知道为什么苹果比橙子少。