如何在MFC(VC ++)中比较两个IP属于同一个类?

时间:2010-11-22 05:31:49

标签: visual-c++ mfc

如何在MFC(VC ++)中比较两个IP属于同一个类(CLASS A,B,C,D)? 我有一个IP为172.24.17.174,另一个为172.24.17.86现在我可以比较他们是否在同一个班级或不在?

任何代码都非常感谢。 感谢

3 个答案:

答案 0 :(得分:2)

不再使用IP地址类,我认为没有任何内置函数来确定这一点。您始终可以编写自己的函数来确定地址的类别(基于definition of address classes):

enum IPClass { ClassA, ClassB, ClassC, ClassD, ClassE };

IPClass getClass(unsigned int addr) {
  char msb = char(addr >> 24);
  if (msb >> 7 == 0x0)
    return ClassA;
  if (msb >> 6 == 0x2)
    return ClassB;
  if (msb >> 5 == 0x6)
    return ClassC;
  if (msb >> 4 == 0xE)
    return ClassD;
  return ClassE;
}

答案 1 :(得分:1)

首先,请记住,A,B,C和D级网的整个想法在很长一段时间内已经过时了。它被15-20年前的可变长度子网掩码所取代(不记得确切,但是早在90年代)。

在任何情况下,地址的第一位都会告诉您类 - 最高有效位中的0表示类A. {2}中最高有效位表示类10。{{在三个最重要的位中,1}}表示C类。我相信其他任何东西都是D类。

正如我所说,IP地址的整个“类”系统已经过时,因此几乎任何你希望用它完成的事情都可能需要以其他方式完成才能产生真正有意义的结果。

答案 2 :(得分:0)

检查2个地址是否在同一网络中:

int result1 = ipaddress1 & subnetmask;
int result2 = ipaddress2 & subnetmask;
if(result1==result2)
{
    cout << "Both in Same network";
}
else
{
    cout << "not in same network";
}