2017-05-11 54 views
0

我正在使用C++编写代码,该代码在Windows和Mac平台上运行。我想写一个函数,它将接受CIDR格式的机器IP地址列表和IP过滤器列表。该功能将检查机器IP是否与IP过滤器匹配。IP地址匹配过滤功能

例如。如果机器IP为10.210.177.47,过滤器为10.210.177.1/32 该功能将检查10.210.177.47是否落入过滤器范围内。 过滤器也可以是简单的IP地址,如10.210.177.45

我需要编写一个可以在Windows和Mac上运行的通用代码。

+0

请指出**你做了什么**,什么有效,什么失败以及你在**原帖**中不明白的地方。 –

+0

我不明白的是如何在比较IP地址时使用掩码。 – user832096

回答

0

最简单的解决方案是将掩码长度转换为位掩码。例如。 /8使用高8位来标识网络,使用低24位来标识该网络内的主机。因此,通过左移超过24位(>>24的IP地址(表示为std::uint32_t),你只保留网络部分对于内10.0.0.0/810.210.177.47,离开10 - 。比赛为/24,它会离开10.210.177 - 没有匹配