我在这里使用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

    最佳答案

    该地址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)
    

    07-24 09:45
    查看更多