我在这里使用Microsoft代码来学习如何检测卡和设备的IP地址:
http://msdn.microsoft.com/en-us/library/aa365949%28v=VS.85%29.aspx
我注意到一些奇怪的行为。
我有一个带有两个以太网卡的系统;一个连接到互联网,一个连接到以太网设备。当我运行示例代码时,它将始终为具有Internet连接的卡提供IP地址,但另一个卡将显示为127.0.0.1,子网掩码为255.0.0.0,除非我已插入以太网设备和动力。但该卡应该有一个默认的IP地址,无论它实际连接到什么,对吧?如何修改此代码以检测它?
检测到第三个IP地址似乎只是空数据。我在另一台具有单一网络连接的计算机上尝试过此操作,并且还检测到第二个不存在的连接。每次,此连接的IP地址为127.0.0.1,子网掩码为255.0.0.0。这代表什么?
鉴于演示代码,这是否易于编辑,以便能够检测网络上任何卡连接的设备的IP地址?我真的只想检测单个以太网设备设置的IP地址。设备直接连接到卡。我想这样做的原因是因为当他们的子网不同时,设备和卡显然不能很好地发挥作用,而我想在何时检测到这种情况。
谢谢!
[R
答案 0 :(得分:2)
127.0.0.1的地址不是另一张卡的地址。它是环回适配器的地址 - 一个只能自己发送和接收数据的虚拟IP地址。另一个NIC(未插入网络)根本不在地址表中。
您可能只想调用GetAdapterAddresses并过滤掉IFType为IF_TYPE_SOFTWARE_LOOPBACK的所有适配器。
如果要查看使用提供相同内容的现有工具,请在命令提示符下键入以下任一项:
route print
(This will dump the routing table)
ipconfig /all
(this will show you the state of ALL adapters including the loopback)
答案 1 :(得分:0)
arping
命令。