Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1437398
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-11 22:27
个人简介

--

文章分类

全部博文(241)

文章存档

2021年(3)

2019年(6)

2018年(1)

2017年(9)

2016年(21)

2015年(50)

2014年(125)

2013年(26)

我的朋友

分类: C/C++

2014-03-20 13:56:11

题目描述:

子网掩码是用来判断任意两台计算机的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属于同一子网络;
代码:

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include "OJ.h"

  5. /*
  6. 功能: 判断两台计算机IP地址是同一子网络。
  7. 原型:
  8.     int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask);

  9. 输入参数:
  10.     char * pcIP1: 计算机1的IP地址,格式:“192.168.0.254”;
  11.     char * pcIP2: 计算机2的IP地址,格式:“192.168.0.1”;
  12.     char * pcSubNetworkMask: 子网掩码,格式:“255.255.255.0”;

  13. 返回值:
  14.     0:IP1与IP2不属于同一子网络;
  15.     1:IP1与IP2属于同一子网络;
  16. */

  17. int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask)
  18. {
  19.     /*在这里实现功能*/
  20.     int a[4]={0};
  21.     int b[4]={0};
  22.     int c[4]={0};
  23.     int i=0;
  24.     int flag=1;
  25.     int tmp=0;

  26.     while(*pcIp1)
  27.     {
  28.             
  29.                  while((*pcIp1!='.')&&(*pcIp1))
  30.                  {
  31.                      tmp =tmp*10+(int)(*pcIp1-'0');    
  32.                      pcIp1++;
  33.                  }
  34.                  if(*pcIp1=='.')
  35.                  {
  36.                      pcIp1++;    
  37.                      a[i++]=tmp;
  38.                      tmp=0;
  39.                  }
  40.             }
  41.     a[i]=tmp;
  42.     tmp=0;        
  43.     i=0;
  44.     
  45.             while(*pcIp2)
  46.     {
  47.             
  48.                  while((*pcIp2!='.')&&(*pcIp2))
  49.                  {
  50.                      tmp =tmp*10+(int)(*pcIp2-'0');    
  51.                      pcIp2++;
  52.                  }
  53.                  if(*pcIp2=='.')
  54.                  {
  55.                      pcIp2++;    
  56.                      b[i++]=tmp;
  57.                      tmp=0;
  58.                  }
  59.             }
  60.     b[i]=tmp;
  61.     tmp=0;    
  62.     i=0;
  63.             
  64.             while(*pcSubNetworkMask)
  65.     {
  66.             
  67.                  while((*pcSubNetworkMask!='.')&&(*pcSubNetworkMask))
  68.                  {
  69.                      tmp =tmp*10+(int)(*pcSubNetworkMask-'0');    
  70.                      pcSubNetworkMask++;
  71.                  }
  72.                  if(*pcSubNetworkMask=='.')
  73.                  {
  74.                      pcSubNetworkMask++;    
  75.                      c[i++]=tmp;
  76.                      tmp=0;
  77.                  }
  78.             }
  79.     c[i]=tmp;
  80.             

  81.         for(i=0;i<4;i++)
  82.         {
  83.             if((a[i]&c[i]) == (b[i]&c[i]))
  84.                 continue;
  85.             else
  86.             {
  87.                 flag=0;
  88.                 break;
  89.             }
  90.         }

  91.         return flag;
  92. }

阅读(1189) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~