判断任意两台计算机的IP地址是否属于同一子网络
来源:互联网 发布:淘宝网中老年大码棉袄 编辑:程序博客网 时间:2024/04/29 01:43
功能: 判断两台计算机IP地址是同一子网络。
输入参数:
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属于同一子网络;
*/
/*将各个值分别提取出来,len是指地址的长度,pos是指起始位置*/
int char2int(char *p,int len,int pos)
{
int num[3]={1,10,100}; /*转换成整数的乘积系数*/
int value;
int i,temp,k;
value=0;
for(i=pos,k=0;i<pos+len;i++,k++)
{
temp=*(p+i)-'0';
value+=temp * num[len-k-1];
}
return value;
}
int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask)
{
/*在这里实现功能*/
unsigned int Ip1,Ip2,netmask;
unsigned int value;
int len,pos,dotpos;
int i,j,k;
int count;
i=j=k=pos=dotpos=0;
Ip1=Ip2=netmask=0;
if(pcIp1 == NULL && pcIp2 == NULL)
return 0;
/*to count IP1*/
while(*(pcIp1+i)!='\0')
{
i++;
}
len=i;
count=8;
for(i=0;i<len;i++)
{
if(*(pcIp1+i) == '.')
{
value=char2int(pcIp1,i-pos,pos);
pos=i+1; /*保存dot后面的起始位置,便于计算下一个地址*/
value=value<<(32-count);/*相应的值进行以为保存, count用来记录移位的长度*/
Ip1|=value;
count+=8;
dotpos+=1;
}
else if(dotpos==3) /*计算最后一位地址*/
{
value=char2int(pcIp1,len-pos,pos);
value=value<<(32-count);
Ip1|=value;
}
}
/*to count IP2*/
while(*(pcIp2+j)!='\0')
{
j++;
}
len=j;
count=8;
pos=dotpos=0;
for(j=0;j<len;j++)
{
if(*(pcIp2+j) == '.')
{
value=char2int(pcIp2,j-pos,pos);
pos=j+1;
value=value<<(32-count);
Ip2|=value;
count+=8;
dotpos+=1;
}
else if(dotpos==3)
{
value=char2int(pcIp2,len-pos,pos);
value=value<<(32-count);
Ip2|=value;
}
}
/*to count netmask*/
while(*(pcSubNetworkMask+k)!='\0')
{
k++;
}
len=k;
count=8;
pos=dotpos=0;
for(k=0;k<len;k++)
{
if(*(pcSubNetworkMask+k) == '.')
{
value=char2int(pcSubNetworkMask,k-pos,pos);
pos=k+1;
value=value<<(32-count);
netmask|=value;
count+=8;
dotpos+=1;
}
else if(dotpos==3)
{
value=char2int(pcSubNetworkMask,len-pos,pos);
value=value<<(32-count);
netmask|=value;
}
}
if((Ip1 & netmask) == (Ip2 & netmask))
return 1;
else
return 0;
}
- 判断任意两台计算机的IP地址是否属于同一子网络
- 判断任意两台计算机的IP地址是否属于同一子网络
- 判断任意两台计算机的IP地址是否属于同一子网络
- 判断任意两台计算机的IP地址是否属于同一子网络
- 判断任意两台计算机的IP地址是否属于同一子网络
- 判断任意两台计算机的IP地址是否属于同一子网络(华为OJ)
- 判断任意两台计算机的IP地址是否属于同一子网络的两种地址转换方法
- [华为机试练习题]54.判断任意两台计算机的IP地址是否属于同一子网络
- 判断两台计算机IP地址是同一子网络
- 判断两台计算机IP地址是同一子网络 华为OJ训练平台---转载
- 判断两个ip地址是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 判断两个IP是否属于同一子网
- 五月的英语
- hive UDF(User-Defined-Function) 实战
- Divide Two Integers
- 安卓详细介绍,深圳Android培训基地助您成功!
- Python 求GCD的lambda表达式
- 判断任意两台计算机的IP地址是否属于同一子网络
- Java collection 集合分析
- 爱的发生的
- hdu1102(Kruskal)
- Mysql FIND_IN_SET 语句原始排序
- IM心路历程1
- 写一个函数,将两个字符串连接,即编写一strcat函数
- Numpy的tile函数
- [情感/交际] 怎么和陌生人搭讪?和陌生人搭讪的技巧经验分享