判断两个IP是否属于同一子网
2015-08-22 20:46
369 查看
import java.math.BigInteger; import java.util.Scanner; public class MatchIP { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String mask = sc.nextLine(); String ip1 = sc.nextLine(); String ip2 = sc.nextLine(); if(isOk(mask) && isOk(ip1) && isOk(ip2)){ String str1 = func(mask,ip1); String str2 = func(mask,ip2); if(str1.equals(str2)) sop("0"); else sop("2"); } else sop("1"); } private static String func(String mask, String ip) { String[] m = mask.split("\\."); String[] ipp = ip.split("\\."); mask = ""; ip = ""; for(int i=0;i<4;i++){ BigInteger big1 = new BigInteger(m[i]); m[i] = big1.toString(2); BigInteger big2 = new BigInteger(ipp[i]); ipp[i] = big2.toString(2); while(m[i].length()!=8){ m[i]="0"+m[i]; } while(ipp[i].length()!=8){ ipp[i]="0"+ipp[i]; } mask = mask+m[i]; ip = ip+ipp[i]; } //sop(mask); //sop(ip); char[] ch = new char[32]; for(int i=0;i<32;i++){ ch[i] = (char) (mask.charAt(i)&ip.charAt(i)); } return new String(ch); } private static boolean isOk(String str) { String[] s = str.split("\\."); if(s.length!=4) return false; for(int i=0;i<4;i++){ if(Integer.parseInt(s[i])<0 || Integer.parseInt(s[i])>255) return false; } return true; } public static void sop(Object o){ System.out.println(o); } }
http://blog.csdn.net/lily0806/article/details/45873161
char * pcIP1: 计算机1的IP地址,格式:“192.168.0.254” char * pcIP2: 计算机2的IP地址,格式:“192.168.0.1” char * pcSubNetworkMask: 子网掩码,格式:“255.255.255.0”
返回值:
0:IP1与IP2不属于同一子网络。 1:IP1与IP2属于同一子网络。
相关文章推荐
- 学习tcl的几个好网络连接
- Winform 分页
- 数据库调优的方法有那些
- javaScript简介
- LeetCode[85]::Maximal Rectangle C++
- NOIP 2005 过河
- poj3258 哈夫曼树 优先队列
- android studio 快捷键
- XMPP的android下的登陆,注册等:
- 一个人如何完成一整个网站的开发(推荐好文,看完绝对让你回味无穷)
- objc的单例模式(ARC环境下)
- 文章标题
- 自适应网页设计
- c++与Tcl通过管道通信,并传递参数,获取测试仪实时测试进度
- USBDM BDM Interface for Freescale Microcontroller -- Hardware
- 存储过程新方法萌芽 *——*
- hdoj1754 I Hate It【线段树区间最大值维护+单点更新】
- sqlite3使用示例
- Git服务器搭建+上传代码
- poj1611 并查集 找感染者