查找子网中的所有IP 我正在使用C++开发一个代码用于我们的项目,我的代码必须返回一个子网中所有可用的IPS的列表,所以我有这样的场景:

查找子网中的所有IP 我正在使用C++开发一个代码用于我们的项目,我的代码必须返回一个子网中所有可用的IPS的列表,所以我有这样的场景:,c++,ip,C++,Ip,获取我的子网 使用for循环测试子网中的每个IP,例如: for (int i = 0; i < 254; i++) { testip(X, X, X, i); /* if IP is valid */ vectoriplist.push_back(X, X, X, i); } for(int i=0;i

获取我的子网

  • 使用
    for
    循环测试子网中的每个IP,例如:

    for (int i = 0; i < 254; i++)
    {
        testip(X, X, X, i);
        /* if IP is valid */
        vectoriplist.push_back(X, X, X, i);
    }
    
    for(int i=0;i<254;i++)
    {
    testip(X,X,X,i);
    /*如果IP有效*/
    向量论者。推回(X,X,X,i);
    }
    
  • 对于查找子网,我想我会使用,但我还有另一个问题,那就是如何测试子网上的IP是否有效。我尝试使用boost.asio,但什么也找不到。

    我找到了一个解决方案:


    我在for循环中使用
    coonect()
    getpeername()
    函数。要获取子网中的所有有效ip地址

    取决于您所称的有效ip地址,该地址是其相应硬件响应ping请求的地址吗?然后,您可以尝试使用简单的SYN/ACK tcp ping假设网络是本地链路,即通过您的链路可见,您可以使用每个IPv4子网都有一个广播地址这一事实。对于IPv6,只需对ff02::1(所有节点地址)执行简单的ping即可。您可以使用fping在子网中查找有效节点。但请注意,一些主机可能会根据其防火墙设置,选择忽略对任意端口的ICMP回显请求(也称为ping)和TCP SYN。ARP可能更可靠,虽然它是链接本地too。谢谢,但是有C++代码示例吗?