• 如何判断两个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;
    }
  • 相关阅读:
    物联网相关开源项目整理
    使用Blynk打造一款物联网产品
    物联网、开源硬件与开源社区
    Spring boot+CXF开发WebService Demo
    vsftp 常见配置测试与故障排除
    Linux vsftpd 配置文件详解
    免费在线文档翻译器
    C#将Word转换成PDF方法总结(基于Office和WPS两种方案)
    微软office web apps 服务器搭建之在线文档预览
    C#把datetime类型的日期转化成年月日或其他格式方法总结
  • 原文地址:https://www.cnblogs.com/zl181015/p/10918533.html
Copyright © 2020-2023  润新知