当前位置:文档之家› ip地址的合法性及子网判断

ip地址的合法性及子网判断

ip地址的合法性及子网判断
ip地址的合法性及子网判断

实验九:IP地址的合法性及子网判断

#include

#include

#include

#include

//类结构

class ipTest{

char ip[15]; //定义ip数组,存放ip地址

char subnetPlusMask[18]; //定义subnetPlusMask数组,存放子网号和子网掩码中1的个数

char subnet[18]; //定义subnet数组,存放子网号

char TempIp[15]; //定义TempIp数组,存放临时的ip地址

char TempSub[18]; //定义TempSub数组,存放临时的子网号

int mask; //定义整型mask,存放子网掩码中1的个数

bool maskIsValid;//定义布尔值maskIsValid,存放判断mask真值的变量

public:

ipTest(char *,char *); //定义ipTest函数

ipTest(){};

bool NoIllegalChar(char *); //非法字符的判断

bool ipIsValid(char *); //判断IP地址是否合法

bool subnetIsValid(char *); //判断子网号是否合法

void belong(); //判断IP是否为子网成员

print();//定义输出函数print

};

//主函数

void main(int argc,char *argv[])

{

if(argc != 3)

{ //判断参数格式是否正确

cout <<"Please input command: ip_test subnet/mask ip" ;

return;

}

else

{

if(strlen(argv[1]) > 18)

{ //先判断最简单的错误,子网号及子网掩码长度和是否超出

cout <<"subnet/mask is too long";

return;

}

if(strlen(argv[2]) > 15)

{ //ip地址长度是否超出

cout<<"ip Address is too long";

return;

}

ipTest test(argv[1],argv[2]); //实例化ipTest类

test.print(); //完成相应判别并输出结果

}

}

//构造函数

ipTest::ipTest(char* subnetPlusMask,char *ip)

{

maskIsValid = true;

char temp[2];

//把'/'前的字符复制到subnet字符数组中

int smLen = strlen(subnetPlusMask); // 定义smLen为subnetPlusMask的长度

for(int i = 0;i < smLen && subnetPlusMask[i] != '/';i++)

{

this->subnet[i] = subnetPlusMask[i]; //对subnet数组赋值,值为subnetPlusMask中的数值

this->TempSub[i] = subnetPlusMask[i]; //对TempSub数组赋值,值为subnetPlusMask 中的数值

}

subnet[i] = '\0';//给数组加上结束符

TempSub[i] = '\0'; //给数组加上结束符

if(i >= smLen-2)

{ //初始化mask和maskIsValid

if(i == smLen-2)

{

temp[0] = subnetPlusMask[i+1];

if(!isdigit(temp[0])) //判断temp中的值是否为字符

maskIsValid = false;

}

else

{

if(i == smLen-3)

{

temp[0] = subnetPlusMask[i+1];

temp[1] = subnetPlusMask[1+2];

if(!(isdigit(temp[0])&&isdigit(temp[1]))) //判断temp中的值是否为字符

maskIsValid = false;

}

}

mask = atoi(temp); //将temp中的字符数值化

if(mask <0 || mask >32) //判断mask值是否超出范围

maskIsValid = false;

}

else //用十进制数表示的掩码中1的个数只能是一位数或者两位数

maskIsValid = false;

strcpy(this->subnetPlusMask,subnetPlusMask); //给subnetPlusMask赋值

strcpy(this->ip,ip); //给IP赋值

strcpy(this->TempIp,ip);

}

//调用判别函数,并输出结果

ipTest::print()

{

bool subIsV = subnetIsValid(TempSub);

bool ipIsV = ipIsValid(TempIp);

//判断子网是否合法

if(!subIsV)

cout <<"subnet is invalid!" <

else

cout <<"valid subnet:" <

//判断掩码是否合法

if(!maskIsValid)

cout <<"mask is invalid!" <

else

cout <<"valid mask:" <

//判断ip地址是否合法

if(!ipIsV)

cout <<"Ip address is invalid!" <

else

cout <<"valid ip address:" <

//判断ip地址是否属于子网

if(subIsV && ipIsV && maskIsValid)

belong();

}

//子网数,判断输入是否含有非数字字符

bool ipTest::NoIllegalChar(char *ch)

{

unsigned int i,k=0;

for(i=0;i

if(isdigit(*(ch+i))==0)

//判断每一位是否为数字字符

return false;

return true; //若不含有非法数字字符则返回true

}

//判别IP地址是否合法

bool ipTest::ipIsValid(char * ip)

{

char ch[]="."; //分隔符

char *token,*dot[4];

int iplen = 0;

token = strtok(ip,ch); //以"."标志将IP字符串按节分开

while(token!=NULL)

{ //循环进行,直到结束

dot[iplen]=token; //将分开的每段赋值给dot

iplen++;

token = strtok(NULL,ch);

}

//判断IP地址的段数

if(iplen != 4) //段数不对

return false;

for(int i = 0; i < 4; i++)

if(!NoIllegalChar(dot[i])||atoi(dot[i])>255) //有非法字符或某段值非法return false;

return true;

}

//判断子网号是否合法

bool ipTest::subnetIsValid(char* subnet)

{

if(!ipIsValid(subnet)) //调用判别IP地址合法性的函数

return false;

return true;

}

//判断IP是否为子网成员,判断子网号与掩码是否匹配,以及子网号、主机号全0全1问题

void ipTest::belong()

{

int subLen = strlen(subnet);

int ipLen = strlen(ip);

unsigned int iIPA,iSubA,iMask;

unsigned char subA[4],ipA[4];

char temp[3];

int i,j,t = 0;

for (i = 0, j= 0;i

{

//不用检错

if(subnet[i]!='.')

temp[j++]=subnet[i]; //temp数组中放'.'间的串

else

{

subA[3-t] = atoi(temp); //subA数组中放'.'间的数据

j=0;

t++;

temp[0]=temp[1]=temp[2]='\0';

}

}

subA[0]=atoi(temp);

temp[0]=temp[1]=temp[2]='\0';

iSubA=*(unsigned int *)subA; //iSubA中放subnet中'.'除外的串对应的数

for(i=0,j=0,t=0;i

{ //不用再检错

if(ip[i]!='.')

temp[j++]=ip[i];

else

{

ipA[3-t]=atoi(temp);

j=0;

t++;

temp[0]=temp[1]=temp[2]='\0';

}

}

ipA[0]=atoi(temp);

iIPA=*(unsigned int*)ipA; //iIPA中放IP中'.'除外的串对应的数

//获得掩码

iMask = 0xffffffff;

iMask <<=(32-mask);

if((iSubA | iMask)!= iMask)

{ //说明sub与mask不匹配

cout <<"subnet and mask not match!" ;

return;

}

if((iSubA^iMask)==0)

{ //说明子网号全1

cout <<"subnet is all 1!" ;

return;

}

if((iSubA&iMask)==0)

{ //说明子网号全0

cout <<"subnet is all 0!" ;

return;

}

if((iSubA)==(iIPA&iMask))

{

//IP和掩码与,结果和子网号比较

if((iIPA|iMask)==iMask)

{

//说明主机号全0

cout <<"Ip address is all 0!" ;

return;

}

if((iIPA|iMask)==0xffffffff)

{

//说明主机号全1

cout <<"Ip address is all 1!";

return;

}

//ip属于subnet

cout <<" " <

return;

}

//ip不属于subnet

else

cout <<" " <

IP地址的合法性和子网判断

计算机网络课程设计报告 题目:IP地址的合法性及子网判断 学生姓名: 学号: 专业班级: 同组姓名: 指导教师: 设计时间:

目录 一、课程设计目的和意义 (1) 1.1设计目的 (1) 1.2设计的意义 (1) 二、课程设计的内容和要求 (2) 三、课程设计的相关技术 (3) 3.1 课程设计的运行环境 (3) 3.2 IP地址相关概念和知识的回顾。 (3) 3.3 特殊的IP地址形式 (4) 3.4 子网的划分 (5) 四、课程设计过程 (6) 4.1程序大致设计过程: (6) 4.2实验流程图 (6) 五、部分程序运行结果 (9) 六、课程设计小结 (11) 七、参考文献 (15)

附录一:源代码 (15) 一、课程设计目的和意义 1.1设计目的 通过计算机网络课程设计,让我们学会处理几种常用计算机网络问题的基本处理方法,掌握计算机网络的基本原理,使我们在面对不断变化的技术时,具有跟踪,学习的基础与能力。 掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。并判断该地址是否属于一个给定的子网。 具体而言,关于”IP地址的合法性及子网判断”课程设计题目的目的是:用C/C++语言编写程序,以判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网.从而能够考察我们对IP地址的概念,各类IP地址的区分以及子网划分的理解和掌握程度. 1.2设计的意义 1、有利于基础知识的理解 通过计算机网络的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问

题的基本态度与基本能力。让学生接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。 2、有利于逻辑思维的锻炼 程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。 3、有利于与其他学科的整合 在程序设计中,我们可以解决其它学科有关问题,也利用其它课程的有关知识来解决信息技术中比较抽象很难理解的知识。在信息技术课中整合其它学科的知识,发挥信息技术的优势。 4、有利于治学态度的培养。 程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。有助于严谨治学、一丝不苟的科学精神的培养,以及不怕失败、百折不挠品格的锻炼。 二、课程设计的内容和要求 在掌握IP地址的表示方法以及子网划分方法的基础上,并以计算机网络中

判断IP地址合法性

XXXX大学 计算机网络实习报告 设计题目判断IP地址合法性 学生专业班级 学生姓名(学号) 指导教师 完成时间 2010年5月25日 实习(设计)地点信息楼139机房 2010 年5月25日 一、实习题目 编写一个判断IP地址是否合法的计算机程序,如果合法给出其子网号。 二、原理概述 所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址“00000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“,这显然比1和0容易记忆得多。 将IP地址分成了网络号和主机号两部分,设计者就必须决定每部分包含多少位。网络号的位数直接决定了可以分配的网络数(计算方法2^网络号位数);主机号的位数则决定了网络中最大的主机数(计算方法2^主机号位数-2)。然而,由于整个互联网所包含的网络规模可能比较大,也可能比较小,设计者最后聪明的选择了一种灵活的方案:将IP地址空间划分成5种不同的类别,每一类具有不同的网络号位数和主机号位数。 32位IP地址的空间划分 IP地址分类 1.A类IP地址 一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围 00000000 00000000 00000001 - 01111110 )。可用的A类网络有126个,每个网络能容纳1677214个主机。 2.B类IP地址 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围 00000001 00000000 00000001 - )。可

ip地址的合法性及子网判断

实验九:IP地址的合法性及子网判断 #include #include #include #include //类结构 class ipTest{ char ip[15]; //定义ip数组,存放ip地址 char subnetPlusMask[18]; //定义subnetPlusMask数组,存放子网号和子网掩码中1的个数 char subnet[18]; //定义subnet数组,存放子网号 char TempIp[15]; //定义TempIp数组,存放临时的ip地址 char TempSub[18]; //定义TempSub数组,存放临时的子网号 int mask; //定义整型mask,存放子网掩码中1的个数 bool maskIsValid;//定义布尔值maskIsValid,存放判断mask真值的变量 public: ipTest(char *,char *); //定义ipTest函数 ipTest(){}; bool NoIllegalChar(char *); //非法字符的判断 bool ipIsValid(char *); //判断IP地址是否合法 bool subnetIsValid(char *); //判断子网号是否合法 void belong(); //判断IP是否为子网成员 print();//定义输出函数print }; //主函数 void main(int argc,char *argv[]) { if(argc != 3) { //判断参数格式是否正确 cout <<"Please input command: ip_test subnet/mask ip" ; return; } else {

IP地址合法性判断及子网检测_实验报告

一. 实验目的 1.加深对IP地址及subnet的认识; 2.了解IP地址的划分; 3. 了解subnet的作用和产生因素,subnet的划分; 4. 实际操作编写规则,匹配IP和subnet,加深理解 二. 实验环境(软件、硬件及条件) 1.软件 操作系统:Windows 7(Windows NT以上版本皆可) 编程环境:Microsoft Visual Studio 2008(兼容MS VS2005,亦可使用VC6.0等)编程语言:C++ 测试环境: MS-DOS 2.硬件 现阶段常见PC 三. 实验方法 Part 1实验原理 我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在Internet上这个庞大的网间网中,每个网络也有自己的标识符。我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机(包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的特定的计算机号码。另一方面,只有在一个网络号下的计算机之间才能"直接"互通,不同网络号的计算机要通过网关(Gateway)才能互通。但这样的划分在某些情况下显得并十分不灵活。为此IP网络还允许划分成更小的网络,称为子网(Subnet),这样就产生了子网掩码 1. IP的寻址规则 (1).网络寻址规则 A、网络地址必须唯一。 B、网络标识不能以数字127开头。在A类地址中,数字127保留给内部回送函数。

IP地址合法性判断及子网判断课设

课程设计任务书 学院信息科学与工程学院专业计算机科学与技术 学生姓名学号 设计题目IP地址合法性判断及子网判断 内容及要求: 判断IP和子网是否合法,接着将IP地址一位位与子网掩码做与运算,看结果是否和子网相等来判断IP地址是否属于某一个网络。 设计总要求: 实现判断输出命令行中的IP是否合法,掩码是否合法以及ip_addr是否是属于子网subnet。将IP地址一位位与子网掩码做与运算,看结果是否和子网相等来判断IP地址是否属于某一个网络。在这个设计中考虑到了以上的种种情况,根据用户输入的IP地址,掩码和子网,程序可以判断输入的IP地址,掩码和子网是否正确以及ip_addr是否是属于子网subnet。 在判断不合法IP时要考虑全面,比如以下情况均属于不合法 连续两个 . 123..2.1.2 含有非法字符 123.23$.2.1 每部分长度超过3 123.2345.2.1 含有超过三个的. 123.23.45.2.1 每部分大于255 256.123.3.3 进度安排: 第1周:布置课程设计任务;查阅资料;分组进行程序设计。 第2周:程序设计和调试;程序验收;答辩;上交课程设计报告。 指导教师(签字): 2011 年 7 月 4日学院院长(签字): 年月日

目录 一课程设计目的和意义 (3) 1.1设计目的 (3) 1.2设计的意义 (3) 二协议的内容说明,关键技术的说明 (4) 2.1 ip地址简介 (4) 2.2 子网掩码简介 (5) 2.3 ip地址的计算 (6) 2.4 子网划分简介 (7) 3.1主程序设计..................................................................................... (8) 3.2验证ip地址合法性 (8) 3.3验证ip是否属于某个子网 (9) 3.4代码 (10) 四程序的运行和调试结果 (19) 运行结果 (19) 五课程设计小结 (21) 六参考文献 (21)

IP地址合法性判断及子网检测_大学课程设计实验报告

理工学院 实验报告 实验名称IP地址合法性判断及子网检验课程名称计算机科学与技术 成绩 班级学号 日期2013年1月地点计算机学院

一.实验目的 本设计要求编辑写程序,判断一个ip地址是否合法,并判断该地址是否属于一个给定子网,从而考察读者是否对ip地址概念及其子网划分有非常清楚的认识。 1加深对IP地址及subnet的认识; 2.了解IP地址的划分; 3. 了解subnet的作用和产生因素,subnet的划分; 4. 实际操作编写规则,匹配IP和subnet,加深理解 二.设计要求 在掌握ip地址表示方法及子网划分方法的基础上,按如下要求完成程序。 1:命令格式:ip_test subnet/mask ip_addr 其中,ip_test为程序名;subnet为子网号,mask是一个数值,代表子网掩码连续1的个数,ip_addr是要测试的ip地址。 2:判断subnet和ip_addr的合法性。 在判断ip地址合法性时要自行编代码,不要使用任何inet函数。判断时要考虑全面。 3:判断掩码的合法性。 4:在ip地址合法的前提下,判断ip_addr是否属于子网subnet。 5:输出命令行中的ip是否合法,掩码是否合法,以及ip_addr是否属于子网subnet. 三.实验环境(软件、硬件及条件) 1.软件 操作系统:Windows xp(Windows NT以上版本皆可) 编程环境:Microsoft Visual Studio 2008(兼容MS VS2005,亦可使用VC6.0等) 编程语言:C++ 测试环境:MS-DOS 2.硬件 现阶段常见PC 四.实验方法 Part 1 实验原理 我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的

IP地址的合法性及子网判断

第三章IP地址的合法性及子网判断 3.1 课程设计目的 本设计要求编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。从而考察读者是否对IP地址概念及其子网划分有非常清楚的认识。 3.2 课程设计要求 在掌握IP地址表示方法及子网划分方法的基础上,按如下要求完成程序。 1)命令行格式:ip_test subnet/mask ip_addr 其中,ip_test为程序名;subnet为子网号;mask是一个数值,代表子网掩码连续1的个数;ip_addr是要测试的IP地址。 例如,要测试的IP地址为202.113.16.10,子网号为为202.113.16.0,子网掩码为255.255.255.0,则命令行为ip_test 202.113.16.0、24 202.113.16.10.(因为255.255.255.0是连续的24个1,所以用24表示。) 2)判断subnet和ip_addr的合法性。 在判断IP地址合法性时要自行编写代码,不要使用任何inet函数。判断时要考虑全面,比如以下ip地址均不合法: 123..2.1 123.23¥.2.1 123.2345.2.1 123.23.45.2.1 3)判断掩码的合法性。 4)在IP地址合法的前提下,判断ip_addr是否属于子网subnet. 5)输出命令行中的ip是否合法,掩码是否合法(可适当给出不合法原因)以 及ip_addr是否属于子网subnet。 A类,B类与C类IP地址中主机号权1的地址chengweizhijieguangbo地址,用来使路由器将一个分组以广播方式发送给特定网络上的所有主机。直接广播地址只能作为分组中的目的地址。物理网络采用的使点-点传输方式,分组广播需要通过软件来实现。

IP地址的合法性及子网判断课程设计任务书

课程设计任务书 学生姓名:孙晓晨专业班级:信息0804 指导教师:杜谦工作单位:信息工程学院 题目: IP地址的合法性及子网判断 初始条件: Windows XP C++,SOCKET 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写 等具体要求) 1.编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网; 2.判断掩码的合法性; 3.在IP地址合法的前提下,判断ip_addr是否属于子网subnet; 4.撰写课程设计说明书。装订后的课程设计说明书不少于10面(含封面、任务书、目录、正文、参考文献、成绩评定表、封底)。 时间安排: 6月12日查阅资料、方案论证 6月13日~6月15日总体规划, 方案设计、调试 6月16日撰写课程设计说明书 6月17日答辩 指导教师签名:年月日 系主任(或责任教师)签名:年月日

#include #include #include #include using namespace std; int a[4]={0,0,0,0}; //分段存放子网 char Ip_addr[15]; //ip地址 char sub_net[15]; //子网 int ip[4]={0,0,0,0}; int subnet[4]={0,0,0,0}; //分段存放ip地址 int address[4]={0,0,0,0}; int num; //子网掩码 //判断IP是否合法 void aa(char c[15]) { //判断IP地址不能超过15 if(strlen(c)>15) {cout<

IP地址和子网划分练习题

1. 19 2.168.1.0/24 使用掩码255.255.255.240 划分子网,其可用子网数为(),每个子网内可用主机地址数为() A. 14 14 B. 16 14 C. 254 6 D. 14 62 2. 子网掩码为255.255.0.0 ,下列哪个IP 地址不在同一网段中() A. 172.25.15.201 B. 172.25.16.15 C. 172.16.25.16 D. 172.25.201.15 3. B类地址子网掩码为255.255.255.248 ,则每个子网内可用主机地址数为() A. 10 B. 8 C. 6 D. 4 4. 对于C 类IP地址,子网掩码为25 5.255.255.248 ,则能提供子网数为() A. 16 B. 32 C. 30 D. 128 5. 三个网段192.168.1.0/24 ,192.168.2.0/24 ,192.168.3.0/24 能够汇聚成下面哪个网段() A. 192.168.1.0/22 B. 192.168.2.0/22 C. 192.168.3.0/22 D. 192.168.0.0/22 6.IP 地址219.25.23.56 的缺省子网掩码有几位?() A.8 B.16 C.24 D.32 7.某公司申请到一个C 类IP 地址,但要连接6 个的子公司,最大的一个子 公司有26 台计算机,每个子公司在一个网段中,则子网掩码应设为?() A.255.255.255.0 B.255.255.255.128 C.255.255.255.192 D.255.255.255.224

8.一台IP 地址为10.110.9.113/21 主机在启动时发出的广播IP 是?() A.10.110.9.255 B.10.110.15.255 C.10.110.255.255 D.10.255.255.255 9.规划一个C 类网,需要将网络分为9 个子网,每个子网最多15 台主机,下列哪个是合适的子网掩码?() A.255.255.224.0 B.255.255.255.224 C.255.255.255.240 D.没有合适的子网掩码 10.与10.110.12.29 mask 255.255.255.224 属于同一网段的主机IP 地址是 ( ) A.10.110.12.0 B.10.110.12.30 C.10.110.12.31 D.10.110.12.32 11.IP 地址190.233.27.13/16 的网络部分地址是? ( ) A.190.0.0.0 B.190.233.0.0 C.190.233.27.0 D.190.233.27.1 12.没有任何子网划分的IP 地址125.3.54.56 的网段地址是? ( ) A.125.0.0.0 B.125.3.0.0 C.125.3.54.0 D.125.3.54.32

IP地址合法性判断及子网检测_实验报告

计算机网络课设实验报告Computer Networking Experiment Report 学生所在学院: 学生所在班级: 学生姓名: 学生学号: 指导教师: 教务处 2014年6 月 设计题目:基于C++的IP地址合法性与子网归属判断

一. 设计目的 考察对于IP地址基本概念及子网划分技术的掌握情况。通过编写程序,判断任意输入的IP地址是否合法,并且判定该地址是否属于同步输入给定的子网范围。二.设计内容 1.设计并编写IP地址的合法性判断代码。 2.设计并编写子网掩码的合法性判断代码。 3.设计并编写子网号的合法性判断代码。 4.设计并编写IP地址归属网络的判断代码 三.课设环境(软件、硬件及条件) 1.软件 操作系统:Windows 7(Windows NT以上版本皆可) 编程环境:Microsoft Visual Studio 2008(兼容MS VS2005,亦可使用VC6.0等)编程语言:C++ 测试环境: MS-DOS 2.硬件 现阶段常见PC 四.实验方法 Part 1实验原理 我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在Internet 上这个庞大的网间网中,每个网络也有自己的标识符。我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机(包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的特定的计算机号码。另一方面,只有在一个网络号下的计算机之间才能"直接"互通,不同网络号的计算机要通过网关(Gateway)才能互通。但这样的划分在某些情况下显得并十分不灵活。 为此IP网络还允许划分成更小的网络,称为子网(Subnet),这样就产生了子网掩码 1. IP的寻址规则 (1).网络寻址规则 A、网络地址必须唯一。 B、网络标识不能以数字127开头。在A类地址中,数字127保留给内部回送函数。 C、网络标识的第一个字节不能为255。数字255作为广播地址。 D、网络标识的第一个字节不能为“0”,“0”表示该地址是本地主机,不能传送。

IP地址的合法性及子网判断-JAVA

IP地址的合法性及子网判断-JAVA

学 0121010680221 号: 课程设计 题目IP地址的合法性及子网判断 学院计算机科学与技术学院 专业软件工程 班级1002 姓名王思腾 指导教师刘东飞

2013 年 6 月19 日 目录 1任务书 (3) 2相关知识 (4) 3课程设计分析 (6) 4 程序清单及注释 (9) 5 运行结果分析及结论 (12) 6 心得感悟。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。14 7 参考文献 ............................................ 错误!未定义书签。

课程设计任务书 学生姓名:王思腾专业班级:软件1002班 指导教师:刘东飞工作单位:计算机学院 题目四: IP地址的合法性及子网判断 初始条件: (1)学习相关知识 (2)C/C++/VC/VB/JAVA语言 (3)PC机一台 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 在掌握IP地址表示方法及子网划分的基础上,按如下要求完成程序。 1)命令行格式:ip_test subnet/mask ip_addr, ip_test其中为程序名;subnet为子网号;mask是一个数值,代表子网掩码连续1的个数;ip_addr是要测试的IP地址。

例如,要测试的IP地址为202.114.16.10,子网号为202.113.16.0,子网掩码为255.255.255.0,则命令行为ip_test 202.113.16.0/24 202.114.16.10(因为255.255.255.0是连续的24个1,所以用24表示)。 2)判断subnet和ip_addr的合法性。在判断IP 地址合法性时要自行编写代码,不要使用任何inet函数。判断时要考虑全面,比如以下IP地址均不合法:123..2.1 / 123.23$.2.1 / 123.2345.2.1 / 123.23.45.2.1 3)判断掩码的合法性。 4)在IP地址合法的前提下,判断ip_addr是否属于子网subnet。 5)输出命令行中的ip是否合法,掩码是否合法(可适当给出不合法的原因)以及ip_addr是否属于子网subnet。 时间安排: 第一、二天:查阅资料,学习算法 第三、四天:编程调试 第五天:书写报告 指导教师签名:年月日

c++实现ip的合法性及子网的判断

一. 源代码 说明: 源文件语言:C++ 文件数:1 源文件名:ipTest.cpp #include #include #include #include #include #include using namespace std; //ipTest类定义 class ipTest{ char ip[15]; //用于存放ip地址 char ip_Temp[15]; //用于存放ip地址 char subnet_mask[18]; //用于存放subnet_mask地址 char subnet[18]; //用于存放subnet地址 char subnet_Temp[18]; //用于存放subnet地址 int mask; //用于存放mask(1的个数) bool maskIsValid; //用于判断的个数是否合适,或是否与subnet匹配 public: ipTest(char *,char *); //自定义初始化类函数 ~ipTest(){}; //析构函数 bool ipIsValid(char *); //判断ip是否合法 bool subnetIsValid(char *); //判断子网号subnet是否合法 bool NoIllegalChar(char *); //ip,subnet地址中非法字符的判断 bool maskIsMatSubnet(int,char *);//判断mask与subnet是否匹配 void AllJudgment(); //判断mask,subnet,ip的合法性问题 void print(); //判断ip是否为子网成员,并输出判断结果 void split(char *,int *); //把单个字符地址转换为十进制数值型地址(含四段)int toBinary(int a); //十进制int型数据转换为二进制int型数据 char * toString(int *a);//把二进制int型数据转换为一个整体的二进制字符型数据}; //main主函数 int main(int argc,char *argv[]) //自动读取数据

IP地址合法性判断及子网检测_大学课程设计实验报告

四川理工学院 实验报告 实验名称IP地址合法性判断及子网检验课程名称计算机科学与技术 姓名成绩 班级学号 日期2013年1月 地点 计算机学院

一. 实验目的 本设计要求编辑写程序,判断一个ip地址是否合法,并判断该地址是否属于一个给定子网,从而考察读者是否对ip地址概念及其子网划分有非常清楚的认识。 1加深对IP地址及subnet的认识; 2.了解IP地址的划分; 3. 了解subnet的作用和产生因素,subnet的划分; 4. 实际操作编写规则,匹配IP和subnet,加深理解 二. 设计要求 在掌握ip地址表示方法及子网划分方法的基础上,按如下要求完成程序。 1:命令格式:ip_test subnet/mask ip_addr 其中,ip_test为程序名;subnet为子网号,mask是一个数值,代表子网掩码连续1的个数,ip_addr是要测试的ip地址。 2:判断subnet和ip_addr的合法性。 在判断ip地址合法性时要自行编代码,不要使用任何inet函数。判断时要考虑全面。 3:判断掩码的合法性。 4:在ip地址合法的前提下,判断ip_addr是否属于子网subnet。 5:输出命令行中的ip是否合法,掩码是否合法,以及ip_addr是否属于子网subnet. 三. 实验环境(软件、硬件及条件) 1.软件 操作系统:Windows xp(Windows NT以上版本皆可) 编程环境:Microsoft Visual Studio 2008(兼容MS VS2005,亦可使用VC6.0等)编程语言:C++ 测试环境: MS-DOS 2.硬件 现阶段常见PC 四. 实验方法 Part 1实验原理 我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的

编程判断ip地址的合法性

XXXXXX大学 XXXXXXX学院 计算机网络与通信实习报告 设计题目编程判断IP地址的合法性 学生专业班级 学生姓名(学号) 指导教师 完成时间 2010-5-22 实习(设计)地点信息楼139、112 2010年 5月 22日

一.实习题目 编写一个判断IP地址是否合法的计算机程序,如果合法,给出其子网号。 二.原理概述 在计算机网络中,主要分为三类IP地址,即A类,B类,C类地址,每一类地址都有其特点和寻址原则。每个IP地址均有32位,8个为一段,共四个字节。每段范围在0~255,超出这个范围就是错误的。子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。子网掩码的计算根据其具体算法来计算。 1.三类地址的特点: 1.1 A类IP地址 0 网络号(7位)主机号(24位) 一个A类IP地址是指,在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。 1.2 B类IP地址 10 网络号(14位)主机号(16位) 一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为14位,主机标识的长度为16位,B类网络地址适用于中等规模规模的网络,每个网络所能容纳的计算机数为6万多台。 1.3 C类IP地址 110 网络号(21位)主机号(8位) 一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP 地址中网络的标识长度为21位,主机标识的长度为8位,C类网络地址数量较多,适用于小规模的局域网络,每个网络最多只能包含254台计算机。 2.IP的寻址规则: 2.1网络寻址规则 网络地址必须唯一。 网络标识不能以数字127开头。在A类地址中,数字127保留给内部回送函数。 网络标识的第一个字节不能为255。数字255作为广播地址。 网络标识的第一个字节不能为“0”,“0”表示该地址是本地主机,不能传送。

IP地址的合法性及子网判断

目录 一、课程设计的目的 ................................. 错误!未定义书签。 二、设计要求 (1) 三、课程设计的内容 ................................. 错误!未定义书签。 3.1课题分析与设计 (1) 3.2课题实现 (2) 四、设计总结 (7) 五、程序代码 (8)

一、设计目的 本设计要求编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网。 二、设计要求 1、使用命令行格式 2、判断subnet和ip_addr的合法性 3、判断掩码的合法性 4、在IP地址合法的前提下,判断ip_addr是否属于子网subnet 三、课程设计分析 1.程序大致流程 1)分别判断子网号,掩码和IP地址的基本格式是否合法。 2)如果三者的基本格式都合法,才调用判定“IP地址是否为子网成员”的函数。该函数同时判别子网号与掩码是否匹配,子网号为全0或全1,主机号为全0,全1. 2.核心代码及说明 1)判断IP地址是否合法。 一般来说,我们先检查最明显的错误。例如,可以先判断IP中”.”个数是否正确;接着,以“.”为标志将IP字符串按节分开;然后,看该IP是否为4段,再判断各节是否是0~255间的整数。关于网络号,主机号全0全1等问题要在后面结合子网掩码一起判断。 这里的关键是怎么将IP字符串以“.”为标志按节分开,这要用到函数strtok (char*strToken,const char*strDelimit).第一个参数是给定的串,第二个参数是分隔符集合,该函数的功能就是以strDelimit中包含的任意字符为分隔符,在strToken中寻找下一个token。每一次调用strtok后,都会在strToken中插入一个NULL字符,所以,如果要读取下一个token,接下来调用strtok时第一个参数用NULL。 char ch[]=“.”; //分隔符 char *token,*dot[4]; int iplen=0; token=strtok(ip,ch); //以“。”标志将IP字符串按节分开 while(token!=NULL){ //循环进行,直到结束 dot[iplen]=token; //将分开的每段赋值给dot iplen++; token=strtok(NULL,ch); } 这样,IP串的每一段都放到dot数组里了,下面判断是否有非法字符,每一段的值是否在0~255之间,就很容易了。

IP地址的合法性及子网判断

仲恺农业工程学院 课程设计IP地址的合法性及子网判断 姓名 院(系)信息科学与技术学院 专业年级 学号 指导教师 职称导师 起止时间2013.10.21—2013.11.04 仲恺农业工程学院教务处制

目录 1.课程设计目的和意义 (3) 1.1设计的目的 (3) 1.2设计的意义 (3) 2.课程设计的内容和要求 (4) 3.课程设计的相关技术 (4) 3.1课程设计的运行环境 (4) 3.2 IP地址相关概念和知识的回顾 (5) 3.3特殊的IP地址形式 (6) 3.4子网的划分 (7) 4.课程设计过程 (7) 4.1程序大致设计过程 (7) 4.2实验流程图 (8) 5.部分程序运行结果 (10) 6.课程设计小结 (12) 7.参考文献 (13) 源代码 (13)

1.课程设计目的和意义 1.1设计目的 通过计算机网络课程设计,让我们学会处理几种常用计算机网络问题的基本处理方法,掌握计算机网络的基本原理,使我们在面对不断变化的技术时,具有跟踪,学习的基础与能力。 掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。并判断该地址是否属于一个给定的子网。 具体而言,关于”IP地址的合法性及子网判断”课程设计题目的目的是:用C/C++语言编写程序,以判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网.从而能够考察我们对IP地址的概念,各类IP地址的区分以及子网划分的理解和掌握程度。 1.2设计的意义 1)有利于基础知识的理解 通过计算机网络的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问题的基本态度与基本能力。让学生接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。 2)有利于逻辑思维的锻炼 程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。 3)有利于与其他学科的整合 在程序设计中,我们可以解决其它学科有关问题,也利用其它课程的有关知识来解决信息技术中比较抽象很难理解的知识。在信息技术课中整合其它学科的知识,发挥信息技术的优势。 4)有利于治学态度的培养

判断IP地址合法性

计算机网络实习报告 设计题目判断IP地址合法性 学生专业班级通信07-2 学生姓名(学号) 指导教师 完成时间 2010年5月25日 实习(设计)地点信息楼139机房 2010 年5月25日

一、实习题目 编写一个判断IP地址是否合法的计算机程序,如果合法给出其子网号。 二、原理概述 所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“10.0.0.1”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。 将IP地址分成了网络号和主机号两部分,设计者就必须决定每部分包含多少位。网络号的位数直接决定了可以分配的网络数(计算方法2^网络号位数);主机号的位数则决定了网络中最大的主机数(计算方法2^主机号位数-2)。然而,由于整个互联网所包含的网络规模可能比较大,也可能比较小,设计者最后聪明的选择了一种灵活的方案:将IP地址空间划分成5种不同的类别,每一类具有不同的网络号位数和主机号位数。 32位IP地址的空间划分 IP地址分类 1.A类IP地址 一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围1.0.0.1-126.255.255.254(二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110)。可用的A类网络有126个,每个网络能容纳1677214个主机。 2.B类IP地址 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围128.1.0.1-191.255.255.254(二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111

IP地址的合法性及子网判断

... . . 计算机网络课程设计报告 题目:IP地址的合法性及子网判断 学生: 学号: 专业班级: 同组: 指导教师: 设计时间: 指导老师意见:

目录 一、课程设计目的和意义 (1) 1.1设计目的 (1) 1.2设计的意义 (1) 二、课程设计的容和要求 (2) 三、课程设计的相关技术 (3) 3.1 课程设计的运行环境 (3) 3.2 IP地址相关概念和知识的回顾。 (3) 3.3 特殊的IP地址形式 (4) 3.4 子网的划分 (5) 四、课程设计过程 (6) 4.1程序大致设计过程: (6) 4.2实验流程图 (6) 五、部分程序运行结果 (9) 六、课程设计小结 (11) 七、参考文献 (12)

附录一:源代码 (12) 一、课程设计目的和意义 1.1设计目的 通过计算机网络课程设计,让我们学会处理几种常用计算机网络问题的基本处理方法,掌握计算机网络的基本原理,使我们在面对不断变化的技术时,具有跟踪,学习的基础与能力。 掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。并判断该地址是否属于一个给定的子网。 具体而言,关于”IP地址的合法性及子网判断”课程设计题目的目的是:用C/C++语言编写程序,以判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网.从而能够考察我们对IP地址的概念,各类IP地址的区分以及子网划分的理解和掌握程度. 1.2设计的意义 1、有利于基础知识的理解 通过计算机网络的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问

计算机网络,课程设计ip,地址的合法性,及子网的判断

计算机网络课程设计报告题目: ip地址的合法性及子网判断 学生姓名: 学号: 专业班级: 同组姓名: 指导教师: 设计时间:

目录 一、课程设计的目的和意义 (1) 1.1设计目的 (2) 1.2设计的意义 (2) 二、课程设计的内容和要求 (2) 三、课程设计的相关技术 (3) 1. IP地址相关概念 (3) 2. 特殊的IP地址形式 (5) 3.子网的划分 (6) 四.课程设计过程 (6) 1、课程设计流程图: (6) 六、课程设计小结 (10) 七.参考文献 (11) 八.附录:课程设计原代码 (12) 一、课程设计的目的和意义

1.1设计目的 掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。并判断该地址是否属于一个给定的子网。 1.2设计的意义 1、有利于对基础知识的理解 2、有利于逻辑思维的锻炼 程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。 3、有利于与其他学科的整合 在程序设计中,我们可以解决其它学科有关问题,也利用其它课程的有关知识来解决信息技术中比较抽象很难理解的知识。在信息技术课中整合其它学科的知识,发挥信息技术的优势。 4、有利于治学态度的培养。 程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。 这当中就有一个严谨治学、一丝不苟的科学精神的培养。 二、课程设计的内容和要求 在掌握IP地址的表示方法以及子网划分方法的基础上,并以计算机网络中关于IP地址的相关理论知识为基石,运用C/C++语言按如下要求完成程序。 1.在判断一个IP地址合法性时要自行编写代码,不要使用任何inet函数

相关主题
文本预览
相关文档 最新文档