判断两个IP是否属于同一子网
来源:互联网 发布:vue 源码 编辑:程序博客网 时间:2024/06/11 01:03
题目
示例:
I P 地址 192.168.0.1
子网掩码 255.255.255.0
转化为二进制进行运算:
I P 地 址 11010000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000
AND运算 11000000.10101000.00000000.00000000
转化为十进制后为: 192.168.0.0
I P 地址 192.168.0.254
子网掩码 255.255.255.0
转化为二进制进行运算:
I P 地 址
子网掩码 11111111.11111111.11111111.00000000
AND运算 11000000.10101000.00000000.00000000
转化为十进制后为:192.168.0.0
通过以上对两台计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0,所以这二台计算机可视为是同一子网络。
思路
根据IP地址的格式
- 首先获取 IP地址
- 判断地址是否合法
- 通过与运算判别两个IP地址是否是同一网络
代码
#include<iostream>using namespace std;void getAddress(int temp[],int length){ int tempInt; for(int i=0;i<length;++i){ cin>>tempInt; cin.ignore(); if(tempInt < 0 || tempInt >255){ tempInt=-1;//标记非法字符 } temp[i]=tempInt; }}int main(){ int mask[4]; int IPOne[4]; int IPTwo[4]; bool isSameSubNet=true; bool isOk=true; //输入有效IP地址 getAddress(mask,4); getAddress(IPOne,4); getAddress(IPTwo,4); //判断是否是同一子网 for(int i=0;i<4;++i){ if((IPOne[i]==-1)||(IPTwo[i]==-1)){ cout<<1<<endl; isOk=false; break; } if((mask[i]&IPOne[i])!=(mask[i]&IPTwo[i])){ isSameSubNet=false; } } //输出 if(isSameSubNet&&isOk){ cout<<0<<endl; }else if(isOk){ cout<<2<<endl; } return 0;}
0 0
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个ip地址是否属于同一子网
- 华为oj_判断两个IP是否属于同一子网
- 华为OJ:判断两个IP是否属于同一子网
- 华为oj 判断两个ip是否属于同一子网
- 华为oj:判断两个IP是否属于同一个子网
- 华为oj 判断两个IP是否属于同一子网
- 【华为OJ】【075-判断两个IP是否属于同一子网】
- [华为OJ] 判断两个IP是否属于同一子网
- 驱动复习(mor8)
- js拖动div或图片
- 说明符和转义字符的解释说明
- 4597: [Shoi2016]随机序列
- C# 动态调用DLL库
- 判断两个IP是否属于同一子网
- 嵌入式面试题收集
- 缓存存取图片
- System.getProperty()
- js中字符串转json
- Java中的泛型方法
- 面向对象五大原则
- MapRedhuce去重的思想
- 通过子接口实现不同vlan间的互通(也称为:单臂路由)