Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Windows API检测网卡和以太网设备的IP地址_C++_Windows_Network Programming - Fatal编程技术网

C++ 使用Windows API检测网卡和以太网设备的IP地址

C++ 使用Windows API检测网卡和以太网设备的IP地址,c++,windows,network-programming,C++,Windows,Network Programming,我在这里使用Microsoft代码学习如何检测卡和设备的IP地址: 我注意到一些奇怪的行为 我有一个带有两个以太网卡的系统;一个连接到互联网,另一个连接到以太网设备。当我运行示例代码时,它将始终为具有internet连接的卡提供IP地址,但另一张卡将显示为127.0.0.1,子网掩码为255.0.0.0,除非我已插入以太网设备并通电。但是无论它是否连接到任何东西,卡都应该有一个默认的IP地址,对吗?我如何修改此代码以检测它 检测到第三个IP地址,似乎只是空数据。我在另一台只有一个网络连接的计算

我在这里使用Microsoft代码学习如何检测卡和设备的IP地址:

我注意到一些奇怪的行为

  • 我有一个带有两个以太网卡的系统;一个连接到互联网,另一个连接到以太网设备。当我运行示例代码时,它将始终为具有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(未插入网络)根本不在地址表中

    您可能只想调用并过滤掉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)
    
  • 确切地说,您至少应该指定您的配置,是DHCP还是静态IP,或者其他什么
  • 这是最重要的
  • 可能需要一些广播。是链路层协议,因此可以在没有IP地址的情况下使用它来广播链路以查找设备,然后检测其地址。不确切地了解windows,但在Unix上有一个
    arping
    命令用于此操作

  • 1.静态IP和DHCP。最好是静态IP,但用户可以通过任何一种方式设置所有内容。2.谢谢3.谢谢@抱歉,我指的是第二个断开连接的接口的配置。据说是通过DHCP或其他方式获取其地址。事实上,我倾向于同意selbie的观点,你可能又把它误认为是环回,因为看起来有些真正的NIC不太可能有这个IP。+1,使用
    路由
    ipconfig
    进行备份对于调试来说是个好主意!