【发布时间】:2021-01-28 13:21:45
【问题描述】:
我必须检查 IP 地址是否属于预定义的子网。例如,IP 地址 192.168.0.1 在 CIDR 范围 192.168.0.0/24 中。
我试过了:
- https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/reference/ip__network_v4.html
- https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/reference/ip__address_v4.html
有一种方法:
is_subnet_of 用于 network_v4 类,但与 adress_v4 没有类似之处。我错过了什么吗?
【问题讨论】:
-
ip::address_v4中有关子网的大多数方法都已弃用,因此您可能必须使用ip::network_v4。 -
@ThomasSablik 那么如何使用 network_v4 处理此任务?
-
您可以创建
ip::network_v4和ip::network_v4::network_v4 并比较network -
@ThomasSablik 是这样的:
network_v4 addr = make_network_v4("192.168.0.1/32"); network_v4 net = make_network_v4("192.168.0.0/24"); cout << addr.is_subnet_of(net) << endl;所以基本上 - 威胁一个 IP 地址作为掩码为 32 的子网?它看起来不像是一个优雅的解决方案。 -
不,我的意思是
network_v4 addr = make_network_v4("192.168.0.1/24"); addr.network == address_v4("192.168.0.0/24");
标签: c++ boost-asio