您的位置:首页 > 理论基础 > 计算机网络

判断任意两台计算机的IP地址是否属于同一子网络

2015-12-13 13:33 435 查看
功能: 判断两台计算机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 <stdlib.h>
#include <string.h>

int getIP(char * chpcIP, unsigned int * npcIP)
{
int i=0;
char * temp;
int tempCnt = 0;
int cnt = 0;
int cntIP = 0;
int lenIP = strlen(chpcIP);
for (i=0;i<=lenIP;i++)
{
if((chpcIP[i] == '.')||(chpcIP[i] == '\0'))
{
temp = (char*)malloc(tempCnt*sizeof(char));
memcpy(temp,chpcIP+i-tempCnt,tempCnt);
cnt += (tempCnt+1);
npcIP[cntIP] = atoi(temp);
free(temp);
cntIP ++;
tempCnt=0;
}
else
{
tempCnt ++;
}
}
return 0;
}

int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask)
{
/*在这里实现功能*/
int flag = 1;
int i = 0;
unsigned int tempIP1[4] ={0};
unsigned int tempIP2[4] ={0};
unsigned int tempMaskIP[4] ={0};
getIP(pcIp1,tempIP1);
getIP(pcIp2,tempIP2);
getIP(pcSubNetworkMask,tempMaskIP);

for (i=0;i<4;i++)
{
if ((tempIP1[i]&tempMaskIP[i])!=(tempIP2[i]&tempMaskIP[i]))
{
flag = 0;
}
}
return flag;
}

int main()
{
char * pcIP1 = "192.168.12.254";
char * pcIP2 = "192.168.12.3";
char * maskIP = "255.255.255.0";
IsSameSubNetwork(pcIP1, pcIP2, maskIP);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: