• 如何判断两个IP地址是不是处于同一网段?


    个人理解,欢迎指正。

    一、要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果-->网络号,如果网络号相同,

      就在同一子网,否则,不在同一子网。

    例:假定选择了子网掩码255.255.254.0,把IP地址和子网掩码转换为二进制,分别将上述两个IP地址分别与掩码做与运算,如下所示:

      211.95.165.24 11010011 01011111 10100101 00011000

      255.255.254.0 11111111 11111111 111111110 00000000
      与的结果是: 11010011 01011111 10100100 00000000
     
      211.95.164.78 11010011 01011111 10100100 01001110
      255.255.254.0 11111111 11111111 111111110 00000000
      与的结果是: 11010011 01011111 10100100 00000000
     
    可以看出,得到的结果(这个结果就是网络地址)都是一样的,因此可以判断这两个IP地址在同一个子网。
     
    一、互联网的地址
      互联网上的每个接口必须有个唯一的Internet地址(也称作IP地址),IP地址长32bit,Internet地址并不采用平面形式的地址空间,如1,2,3等。
      五类不同的互联网复制格式如图所示:
              

                        五类互联网IP地址

      这些32位的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称为"点分十进制表示法"。如:192.168.10.11。

      ① IP地址 和 子网掩码相与得到得到网络号

      ② 子网掩码先取反,在 和 IP地址相与得到主机号

     判断两个Ip是否在同一网段的方法,前提是两个ip的子网掩码相同;(子网掩码,ip1,ip2)
    public static bool CheckIPAndMask(string mask,string ip1,string ip2){
       string[] maskList=mask.Split('.');
       string[] ip1List=ip1.Split('.');
       string[] ip2List=ip2.Split('.');
       for(int j=0;j<maskList.length;j++)
       {
             if((int.Parse(ip1List[j])&int.Parse(maskList[j]))!=
                (int.Parse(ip1List[j])&int.Parse(maskList[j])))
          {
               return false;
          }
       }
       return true;
    }
  • 相关阅读:
    React 创建一个自动跟新时间的组件
    React 组件传值 父传递儿子
    React 以两种形式去创建组件 类或者函数(二)
    React 语法基础(一)之表达式和jsx
    ref的使用
    使用scale等比例缩放图片
    Vue动态加载图片图片不显示
    div里面的元素在【垂直 方向】上水平分布 使用calc()函数动态计算
    控制label标签的宽度,不让它换行 label标签左对齐
    表单验证
  • 原文地址:https://www.cnblogs.com/zl181015/p/10918533.html
Copyright © 2020-2023  润新知