题目描述:
子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。
功能: 判断两台计算机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属于同一子网络;
代码:
-
#include <stdio.h>
-
#include <string.h>
-
#include <stdlib.h>
-
#include "OJ.h"
-
-
/*
-
功能: 判断两台计算机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属于同一子网络;
-
*/
-
-
int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask)
-
{
-
/*在这里实现功能*/
-
int a[4]={0};
-
int b[4]={0};
-
int c[4]={0};
-
int i=0;
-
int flag=1;
-
int tmp=0;
-
-
while(*pcIp1)
-
{
-
-
while((*pcIp1!='.')&&(*pcIp1))
-
{
-
tmp =tmp*10+(int)(*pcIp1-'0');
-
pcIp1++;
-
}
-
if(*pcIp1=='.')
-
{
-
pcIp1++;
-
a[i++]=tmp;
-
tmp=0;
-
}
-
}
-
a[i]=tmp;
-
tmp=0;
-
i=0;
-
-
while(*pcIp2)
-
{
-
-
while((*pcIp2!='.')&&(*pcIp2))
-
{
-
tmp =tmp*10+(int)(*pcIp2-'0');
-
pcIp2++;
-
}
-
if(*pcIp2=='.')
-
{
-
pcIp2++;
-
b[i++]=tmp;
-
tmp=0;
-
}
-
}
-
b[i]=tmp;
-
tmp=0;
-
i=0;
-
-
while(*pcSubNetworkMask)
-
{
-
-
while((*pcSubNetworkMask!='.')&&(*pcSubNetworkMask))
-
{
-
tmp =tmp*10+(int)(*pcSubNetworkMask-'0');
-
pcSubNetworkMask++;
-
}
-
if(*pcSubNetworkMask=='.')
-
{
-
pcSubNetworkMask++;
-
c[i++]=tmp;
-
tmp=0;
-
}
-
}
-
c[i]=tmp;
-
-
-
for(i=0;i<4;i++)
-
{
-
if((a[i]&c[i]) == (b[i]&c[i]))
-
continue;
-
else
-
{
-
flag=0;
-
break;
-
}
-
}
-
-
return flag;
-
}
阅读(1189) | 评论(0) | 转发(0) |