在 C# 中重叠 IP

Overlapping IP's in C#

好的,我正在用 C# 编写程序,如果您愿意,我会尝试检测重叠的 IP 池或重叠的子网通配符。我使用 NOT 逻辑将其从通配符转换为子网。现在我必须检测 IP 是否重叠。 一个例子:

192.168.1.1 255.255.0.0

重叠

192.168.1.1 255.255.255.0

所以我希望我的代码能够检测到这一点。有没有人知道这件事。

感谢任何帮助。

您需要将 IP 和子网掩码从点分十进制表示法转换为 32 位整数。让我们称它们为 ip1_addrip2_addrip1_mskip2_msk.

先比较两个mask,看哪个更小(mask值越小,范围越大),第二步用那个。然后对每个 ip 地址和子网掩码进行按位与,并检查结果是否相同 ip1_addr & mask == ip2_addr & mask.