如何判断两个ip是否位于同一子网上?唯一的输入是ip地址和子网掩码!如果两个ip拥有相同的子网,那么使用C/C++进行计算的最佳方法是什么?
发布于 2017-01-02 20:29:29
bool checkForSubnetEquality(in_addr_t ipA, in_addr_t ipB, uint32_t subnetMask) {
return (ipA & subnetMask) == (ipB & subnetMask);
}发布于 2017-01-02 20:18:22
typedef unsigned char BYTE;
Bool CheckForSubnetParity(
BYTE[] _In_ iPAddress1,
BYTE[] _In_ iPAddress2,
BYTE[] _In_ subNetMask
) {
BYTE[] NetworkPrefix1 = new BYTE[4];
BYTE[] NetWorkPrefix2 = new BYTE[4];
Bool Result = true;
for ( int x = 0; x < 4; x++)
{
NetworkPrefix1[x] = iPAddress1[x] && subNetMask[x];
NetworkPrefix2[x] = iPAddress2[x] && subNetMask[x];
if ( NetworkPrefix1[x] != NetworkPrefix2[x] )
{
Result = false;
}
}
return Result;
}发布于 2017-01-17 09:06:52
您可以将“xor”操作应用于两个IP,使用它们的掩码并在此之后进行比较。如果它们是相同的,那么两个IP地址在同一个子网中。
让我们看看172.16.2.4/255.255.0.0和172.16.1.69/255.255.0.0之后的'xor‘,您将得到'172.16.0.0’的两个地址,因此他们在同一个子网。
致以问候。
https://stackoverflow.com/questions/41432327
复制相似问题