[华为机试练习题]54.判断任意两台计算机的IP地址是否属于同一子

题目

描述:

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。

请看以下示例: 运算演示之一:

IP地址:192.168.0.1子网掩码:255.255.255.0AND运算转化为二进制进行运算:IP地址:11010000.10101000.00000000.00000001 子网掩码:11111111.11111111.11111111.00000000 AND运算:11010000.10101000.00000000.00000000 转化为十进制后为: 192.168.0.0

运算演示之二:

IP地址:192.168.0.254 子网掩码:255.255.255.0 AND运算转化为二进制进行运算:IP地址:11010000.10101000.00000000.11111110 子网掩码:11111111.11111111.11111111.00000000 AND运算:11010000.10101000.00000000.00000000 转化为十进制后为:192.168.0.0通过以上对两台计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0,所以这二台计算机可视为是同一子网络。

接口说明 原型:

int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask);

输入参数:

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属于同一子网络。

练习阶段:

初级

代码

/*—————————————* 日期:2015-07-05* 作者:SJF0115* 题目:判断任意两台计算机的IP地址是否属于同一子网络 * 来源:华为机试练习题—————————————–*/;/*功能: 判断两台计算机IP地址是同一子网络。原型:int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask);输入参数: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属于同一子网络;*/// 检查子网掩码和IP格式是否正确 并返回分段bool CheckIP(string str,vector<int> &numVec){int size = str.size();int pointCount = 0;string::size_type index = 0;int prePoint = 0;vector<string> part;while((index = str.find_first_of(‘.’,index)) != string::npos){//..之间有数字if(index > prePoint){part.push_back(str.substr(prePoint,index-prePoint));}//if++index;prePoint = index;++pointCount;}//whileif(prePoint < size){part.push_back(str.substr(prePoint));}//ifint partSize = part.size();if(partSize != 4){return false;}num;for(int i = 0;i < partSize;++i){num = atoi(part[i].c_str());numVec.push_back(num);if(num < 0 || num > 255){return false;}//if}(pointCount != 3){return false;};}int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask){if(pcIp1 == NULL || pcIp2 == NULL || pcSubNetworkMask == NULL){return 0;}ip1(pcIp1);string ip2(pcIp2);string net(pcSubNetworkMask);vector<int> ip1Vec;vector<int> ip2Vec;vector<int> netVec;int result,result2;// ip 子网掩码 输入合法if(CheckIP(ip1,ip1Vec) && CheckIP(ip2,ip2Vec) && CheckIP(net,netVec)){for(int i = 0;i < 4;++i){result = ip1Vec[i] & netVec[i];result2 = ip2Vec[i] & netVec[i];if(result != result2){return 0;}//if}//for}//ifelse{return 0;};}

拥有一颗比九万五千公里还辽阔的心,

[华为机试练习题]54.判断任意两台计算机的IP地址是否属于同一子

相关文章:

你感兴趣的文章:

标签云: