首页 > 代码库 > 判断任意两台计算机的IP地址是否属于同一子网络
判断任意两台计算机的IP地址是否属于同一子网络
#include "OJ.h" #include<string> #include<iostream> using namespace std; /* 功能: 判断两台计算机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属于同一子网络; */ void strToInts(char *ipAdd, int* iArr )//将ip地址转换成整型,存储到iArr中 { char temp[4]; memset(temp,0,sizeof(temp)); char *p = ipAdd; int i =0; int j= 0; while (*p != '\0')//将前三个用'.'分割的字符串转换成整数 { if (*p != '.') { temp [j] = *p; j++; ++p; } else { iArr[i] = atoi(temp); memset(temp,0,sizeof(temp)); j = 0; i++; ++p; } } iArr[i] = atoi(temp);//将最后一段字符串转换成整数 } int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask) { /*在这里实现功能*/ int Ip1[4]={0}; int Ip2[4] = {0}; int mask[4] ={0}; strToInts(pcIp1, Ip1); strToInts(pcIp2, Ip2); strToInts(pcSubNetworkMask, mask); for (int i =0; i < 4; ++i) { if ((Ip1[i]&mask[i]) != (Ip2[i] &mask[i]))//子网号码如果有不同的,则两个Ip地址不在同一子网 { return false; } } return true; } int main() { cout<<IsSameSubNetwork("192.168.0.1", "192.168.0.254", "255.255.255.0")<<endl; return 0; }
判断任意两台计算机的IP地址是否属于同一子网络
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。