功能: 判断两台计算机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不属于同一子网络;
原型:
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;
}