根据IP和子网掩码,判断ip是否属于子网
来源:互联网 发布:c语言goto怎么用 编辑:程序博客网 时间:2024/06/03 20:14
直接上代码:
此方法对于掩码为31、32不生效。掩码为31、32的可以特殊指定子网IP
private boolean validSingleSubnetMask(String subnetMask, String ip) {logger.info("开始校验ip是否属于子网。ip:{},子网:{}", ip, subnetMask);boolean flag = false;String[] subnetMasks = subnetMask.split("/");String[] subnetIp = subnetMasks[0].split("\\.");String[] validIp = ip.split("\\.");Integer hostIpMask = Integer.parseInt(subnetMasks[1]);Integer remainder = hostIpMask % 8;Integer ipIndexRange = remainder == 0 ? 256 : 256 >> remainder;//ip子网在第几个地址允许的长度for (int i = 1; i <= 4; i++) {//通过子网掩码长度,判断ip从什么地方开始需要校验if (i * 8 > hostIpMask) {Integer subnetIpValue = Integer.parseInt(subnetIp[i-1]);Integer validIpIndex = Integer.parseInt(validIp[i-1]);for (int j = 0; j < (256/ipIndexRange); j++) {if (subnetIpValue >= ipIndexRange * j && subnetIpValue < ipIndexRange * (j + 1)) {logger.info("子网:"+subnetMask+" 子网允许的ip为:"+ ipIndexRange * j + "到:" + ipIndexRange * (j + 1));if (validIpIndex > ipIndexRange * j && validIpIndex <= ipIndexRange * (j + 1) - 2) {logger.info("ip{}属于子网{}", ip, subnetMask);flag = true;break;} else {logger.info("ip{}不属于子网{}", ip, subnetMask);}}}break;} else {if (!validIp[i-1].equals(subnetIp[i-1])) {//前面ip开头不同,校验不通过logger.info("ip{}不属于子网{}", ip, subnetMask);break;}}}return flag;}
阅读全文
0 0
- 根据IP和子网掩码,判断ip是否属于子网
- 根据ip和子网掩码判断两个ip是否在同一个子网
- 根据IP地址和子网掩码判断子网范围
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- Python判断IP是否属于某子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 子网掩码判断两个IP地址是否在一个子网中
- 判断两个ip地址是否属于同一子网
- 华为oj_判断两个IP是否属于同一子网
- 华为OJ:判断两个IP是否属于同一子网
- Mysql优化
- Ubuntu下apt-get命令详解
- umeditor和bootstrap共同使用上标和小标功能有bug的问题
- 测试小故事48:想当然
- highcharts 柱状图 选择颜色改变(原创)
- 根据IP和子网掩码,判断ip是否属于子网
- 【Android】Intent传递数据量过大的问题android.os.TransactionTooLargeException
- 自定义拦截器
- 将文本保存为TXT文档
- WPF中Treeview使用HierarchicalDataTemplate模板之后内容不充满
- C++之创建自定义类型的数组---补充(17)《Effective C++》
- Dev 皮肤控件使用的几种方式
- openvr_survivor第一期开发活动:复位与定位追踪
- 工具:前端参考书籍目录