精品网络毕业论文报告IP地址的合法性及子网判断.docx

上传人:b****1 文档编号:1615528 上传时间:2023-05-01 格式:DOCX 页数:27 大小:196.98KB
下载 相关 举报
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第1页
第1页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第2页
第2页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第3页
第3页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第4页
第4页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第5页
第5页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第6页
第6页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第7页
第7页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第8页
第8页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第9页
第9页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第10页
第10页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第11页
第11页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第12页
第12页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第13页
第13页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第14页
第14页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第15页
第15页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第16页
第16页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第17页
第17页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第18页
第18页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第19页
第19页 / 共27页
精品网络毕业论文报告IP地址的合法性及子网判断.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

精品网络毕业论文报告IP地址的合法性及子网判断.docx

《精品网络毕业论文报告IP地址的合法性及子网判断.docx》由会员分享,可在线阅读,更多相关《精品网络毕业论文报告IP地址的合法性及子网判断.docx(27页珍藏版)》请在冰点文库上搜索。

精品网络毕业论文报告IP地址的合法性及子网判断.docx

精品网络毕业论文报告IP地址的合法性及子网判断

中国计量学院

现代科技学院

课程设计报告本

 

课程设计名称IP地址的合法性及子网判断

系(部)信息系学号

专业计算机姓名

班级101指导教师虞戟

 

2013年7月5日

课程设计报告目录

一、设计的目的和要求1

1.目的1

二、设计任务2

三、设计方案分析2

(一)总体设计2

(二)模块设计4

四、调试与运行4

(一)调试中遇到的问题和解决办法4

(二)运行说明5

(三)运行效果展示5

五、设计体会与建议8

附录一:

参考文献8

附录二:

源代码9

附件:

 

中国计量学院现代科技学院课程设计报告P.1

IP合法性和子网的判断

一、设计的目的和要求

1.目的

掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。

并判断该地址是否属于一个给定的子网。

判断IP地址属于ABC那类网。

2.要求

根据后面介绍的IP地址与子网划分的知识,编写程序判断IP地址的合法性及属于子网。

1)以命令行形式运行:

IPAddresssubnet_addressmaskip_address

其中,IPAddress为程序名,subnet_address为子网地址,mask为掩码,ip_address为IP地址

2)判断IP地址属于ABC那类网。

3)判断subnet和ip_addr的合法性。

在判断IP地址合法性时要自行编写代码,不要使用任何inet 函数。

判断时要考虑各种情况,全面分析问题。

4)判断掩码的合法性。

譬如说mask的值为负数或者大与32,这时输入的掩码就不合法。

5)在IP地址合法,掩码合法以及子网号也合法的前提下,判断ip_addr是否属于subnet。

6)输出命令行中的ip是否合法,掩码是否合法,子网号码是否合法(可适当给出不合法的原因)以及ip_addr是否属于子网subnet。

7)还可以判断子网号,主机号全0,全1问题。

中国计量学院现代科技学院课程设计报告P.2

二、设计任务

通过程序正确的实现对IP地址合理性的判断;当给定一IP地址时,本程序能实现对其IP地址、子网地址、掩码的合法性做出正确的判断,以及能判断该IP地址是否属于子网,和IP地址属于ABC哪类网络

三、设计方案分析

(一)总体设计

1.分别输入子网号、掩码和IP地址。

2.分别判断子网号、掩码和IP地址的基本格式是否合法。

 

3.如果三者的基本格式都合法,才调用判定“IP地址是否为子网成员”的函数。

该函数同时判别子网号与掩码是否匹配,子网号为全0或全1,主机号为全0、全1.

4.如果三者的基本格式都合法,判断IP地址属于ABC哪类网

中国计量学院现代科技学院课程设计报告P.3

(程序流程图-1)

中国计量学院现代科技学院课程设计报告P.4

(二)模块设计

(模块流程图-2)

四、调试与运行

(一)调试中遇到的问题和解决办法

1.输入命令行进行运行时,却发现不管我们输入的子网地址是否合法,运行结果都显示:

subnet is invalid。

我们分析了很久也找不到原因,无奈我们再一次寻求同学的帮助。

他只是把整个程序大致浏览了一下就发现了错误,原来我们把char ip[15],char subnetPlusMask[18],char subnet[18],char TempIp[15]这几个变量设置成了私有变量,导致后面的程序不能访问。

2.输入192.168.1.024192.168.1.55显示出现不属于该子网,这是错误的。

然后在(iSubA&iMask)中发现了问题所在。

3.出现很多的地方少了},然后经过我详细的查找得以解决。

4.发现很多词语没有定义,然后经过查找发现定义类时,单词打错了。

中国计量学院现代科技学院课程设计报告P.5

(二)运行说明

程序编译成功后,打开cmd,然后打入cdd:

kcsjdebug(程序生成的Debug文件路径下),再进行打入TestIP(程序文件名)192.168.1.024192.168.1.55(IPAddresssubnet_addressmaskip_address),然后会出现运行结果,查看IP地址IP地址、子网地址、掩码的合法性,以及能判断该IP地址是否属于子网,和IP地址属于ABC那类网络。

(三)运行效果展示

(1)在命令提示窗口中输入命令:

TestIP192.133198.1.1;

TestIP256.1.1.024256.1.1.55

详细的判断IP地址、子网地址、掩码的合法性

中国计量学院现代科技学院课程设计报告P.6

(2)在命令提示窗口中输入命令:

TestIP19.16.1.02419.16.1.55

IP地址属于该子网,并且IP地址属于A类网

(3)在命令提示窗口中输入命令:

TestIP192.16.1.024168.125.168.192

IP地址不属于该子网,并且IP地址属于B类网

中国计量学院现代科技学院课程设计报告P.7

(4)在命令提示窗口中输入命令:

TestIP192.168.1.024192.168.2.55

IP地址不属于该子网,并且IP地址属于C类网

(5)在命令提示窗口中输入命令:

TestIP192.168.1.024192.168.1.55

IP地址属于该子网,并且IP地址属于C类网

中国计量学院现代科技学院课程设计报告P.8

五、设计体会与建议

这次课程设计,我收获了很多东西。

通过上网和到图书馆查阅资料,我更加深入的学习了C语言,并利用所学知识设计,充分锻炼,增强了我的程序设计能力,使我加深了对理论知识的理解和掌握。

充分体会到了理论固然重要,如果没有实践去验证,那也只是停在理论层面上,它的现实意义将无法得到体现。

所以,这次课程设计是理论与实践的结合,增强了我在这方面的能力。

  

通过这次课程设计,我更加深刻的理解了IP地址的合法性,IP地址与子网的从属关系,子网与子网掩码的关系。

在判断IP地址是否属于一个子网时,我对IP地址的分类以及子网划分有了更加深刻的理解。

 

在这次课程设计的过程中,我遇到了很多问题,但经过老师和同学的帮助,我解决了这些问题,并学到了很多知识,在此,对老师和同学表示真挚的感谢。

附录一:

参考文献

[2]张尧学,郭国强,王晓春,赵艳标。

计算机网络与Internet教程[第2版]。

清华大学出版社,2006,11。

中国计量学院现代科技学院课程设计报告P.9

附录二:

源代码

#include

#include

{

cout<<"目录地址:

"<

中国计量学院现代科技学院课程设计报告P.10

cout<<"subnet_mask:

"<

cout<<"ip地址:

"<

判断段数是否输入合法

if(argc!

=3)argc表示输入的参数个数,无参数输入时,其值为,因为默认argv[0]总是有的

{

cout<<"输入非法!

";

return0;

}

else

{

先简单判断subnetmask的长度

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

{

cout<<"subnetmask输入非法!

";

system("pause");

return0;

}

先简单判断ip的长度

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

{

cout<<"ip输入非法!

";

system("pause");

return0;

}

}

ipTesttest(argv[1],argv[2]);实例化类,传入两个参数

test.AllJudgment();调用函数,判断mask,subnet,ip的合法性问题

system("pause");系统暂停

return0;

}

构造函数

中国计量学院现代科技学院课程设计报告P.11

ipTest:

:

ipTest(char*subnet_mask,char*ip)

{

maskIsValid=true;设置maskIsValid默认为合法

chartemp[2];定义变量

inti,len;

len=strlen(subnet_mask);

*******************从subnetmask中分离出subnet地址***************

for(i=0;i

='';i++)

{

this->subnet[i]=subnet_mask[i];

this->subnet_Temp[i]=subnet_mask[i];

}

subnet_Temp[i]='\0';

subnet[i]='\0';

**************************判断mask是否为数值************************

if((len-(i+1)<3&&len-(i+1)>0))判断mask是否为一二位字节

{

if(len-(i+1)==1)表明mask是一位

{

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

判断字符是否为数值型字符

if(!

isdigit(temp[0]))isdigit()为库函数,可以调用

{

cout<<"mask中含有非数字的非法字符,error!

"<

maskIsValid=false;mask不是数值,则设置为false

}

}

elseif((len-3)==i)表明mask是二位

{

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

temp[1]=subnet_mask[i+2];

if(!

(isdigit(temp[0])&&isdigit(temp[1])))

{

cout<<"mask中含有非数字的非法字符,error!

"<

中国计量学院现代科技学院课程设计报告P.12

maskIsValid=false;

}

}

mask=atoi(temp);自动把数字字符转换为对应的十进制数值的函数

if(mask<0||mask>32)

maskIsValid=false;

}

else表明mask为空或字节超出范围

{

cout<<"mask为空或超出范围,error!

"<

maskIsValid=false;若mask是三位数,则表明mask输入非法(其实为~32)

}

********************************************************************

strcpy(this->subnet_mask,subnet_mask);给subnet_mask赋值

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

strcpy(this->ip_Temp,ip);给ip_temp赋值

}

判断mask,subnet,ip的合法性问题

voidipTest:

:

AllJudgment()

{

设置标志subnet地址是否合法的bool型变量,并调用subnetIsValid函数判断

boolsubnetIsV=subnetIsValid(subnet_Temp);

设置标记ip地址是否合法的bool型变量,并调用ipIsValid函数判断

boolipIsV=ipIsValid(ip_Temp);

设置标记mask与subnet地址是否匹配的bool型变量,并调用maskIsMatSubnet函数判断

boolmaskIsMatSub=maskIsMatSubnet(mask,subnet_Temp);

cout<

************************判断返回的值是否为真******************

中国计量学院现代科技学院课程设计报告P.13

if(!

maskIsValid)表示返回的maskIsValid是false

{

cout<<"maskerror!

(mask为整数并在-32范围内)"<

}

*

else

{

cout<<"mask合法!

"<

}

*

*

if(!

maskIsMatSub)

{

表示返回的maskIsMatSub是false

cout<<"mask与subnet不匹配,error!

"<

}

else

{

cout<<"mask与subnet匹配!

"<

}

*

if(!

subnetIsV)

{

表示返回的subnetIsV是false

cout<<"subneterror!

"<

}

*

else

{

cout<<"subnet地址合法!

"<

}

if(!

ipIsV)

{

表示返回的ipIsV是false

cout<<"ip地址非法!

"<

中国计量学院现代科技学院课程设计报告P.14

}

else

{

cout<<"ip地址合法!

"<

}

*

都合法

if(maskIsValid&&maskIsMatSub&&subnetIsV&&ipIsV)

{

print();

}

}

判断mask与subnet是否匹配

boolipTest:

:

maskIsMatSubnet(intmask,char*subnet_Temp)

{

intnbsubnet[4];用于放十进制的各段地址

调用把单个字符地址转换为十进制数值型地址(含四段)的函数,实现转换

split(subnet_Temp,nbsubnet);

subnet是A类地址

if(nbsubnet[0]>0&&nbsubnet[0]<127&&mask<8)

{

mask的值小于

cout<<"mask与subnet不匹配,error!

"<

returnfalse;

}

subnet是B类地址

if(nbsubnet[0]>=128&&nbsubnet[0]<=191&&mask<16)

{

mask的值小于

cout<<"mask与subnet不匹配,error!

"<

returnfalse;

}

subnet是C类地址

if(nbsubnet[0]>=192&&nbsubnet[0]<=223&&mask<24)

{

中国计量学院现代科技学院课程设计报告P.15

mask的值小于

cout<<"mask与subnet不匹配,error!

"<

returnfalse;

}

mask与subnet地址匹配

returntrue;

}

把单个字符地址转换为十进制数值型地址(含四段)

voidipTest:

:

split(char*chaddr,int*addr)

{

charch[]=".";

char*token,*dot[4];

intiplen=0;

token=strtok(chaddr,ch);

while(token!

=NULL)

{

dot[iplen]=token;

addr[iplen]=atoi(dot[iplen]);atoi()函数把字符数值转换为int型数值

iplen++;

token=strtok(NULL,ch);

}

}

ip,subnet地址中非法字符的判断

boolipTest:

:

NoIllegalChar(char*ch)

{

inti,len=strlen(ch);

for(i=0;i

{

if(ch[i]-'0'>9||ch[i]-'0'<0)

{

returnfalse;

}

}

中国计量学院现代科技学院课程设计报告P.16

returntrue;

}

判断ip是否合法

boolipTest:

:

ipIsValid(char*ip)

{

charch[]=".";

charip_one[18];

strcpy(ip_one,ip);

char*token,*dot[4];

intiplen=0;

库函数strtok(),以ch[]为界限来分段

token=strtok(ip_one,ch);

while(token!

=NULL)

{

dot[iplen]=token;

iplen++;

token=strtok(NULL,ch);此时,第一个参数必须换为NULL

}

if(iplen!

=4)

{

cout<<"地址"<

"<

returnfalse;

}

intj,t=0;

for(j=0;j<=strlen(ip);j++)

{

if(ip[j]=='.')

{

t++;

}

}

if(t!

=3)

中国计量学院现代科技学院课程设计报告P.17

{

cout<<"地址"<

"<

returnfalse;

}

inti;

for(i=0;i

{

if(!

NoIllegalChar(dot[i])||atoi(dot[i])>255)

{

if(!

NoIllegalChar(dot[i]))判断含有非法字符

cout<<"地址"<

"<

if(atoi(dot[i])>255)判断数值溢出

cout<<"地址"<

"<

returnfalse;

}

}

intflag=1;首先设置为非法,即全

for(i=0;i

{

if(atoi(dot[i])!

=0)

{

含有非的字段

flag=0;

}

}

if(flag==1)

{

cout<<"地址"<

"<

returnfalse;

}

中国计量学院现代科技学院课程设计报告P.18

flag=1;首先设置为非法,即全

for(i=0;i

{

if(atoi(dot[i])!

=255)

{

flag=0;

}

}

if(flag==1)

{

cout<<"地址"<

"<

returnfalse;

}

intj1=0,j2;

if(ip==ip_Temp)

{

首先判断ip是哪类地址

if(atoi(dot[0])>0&&atoi(dot[0])<127)A类ip地址

{

j1=1;直接从开始

cout<<"Ip地址属于A类网"<

}

if(atoi(dot[0])==127)为的特殊号

{

cout<<"ip地址"<

error!

"<

returnfalse;

}

if(atoi(dot[0])>=128&&atoi(dot[0])<=191)B类ip地址

{

j1=2;

cout<<"Ip地址属于B类网"<

}

中国计量学院现代科技学院课程设计报告P.19

if(atoi(dot[0])>=192&&atoi(dot[0])<=223)C类ip地址

{

j1=3;

cout<<"Ip地址属于c类网"<

}

if(atoi(dot[0])>223&&atoi(dot[0])<255)

{

cout<<"请重新输入ip地址"<

"<

returnfalse;

}

if(atoi(dot[0])==255)

{

cout<<"ip地址"<

"<

returnfalse;

}

j2=j1;j1用于判断全情况,j1用于判断全情况的起始下标

intflag=1;首先设置为非法,即主机号全

for(i=j1;i

{

if(atoi(dot[i])!

=0)

{

flag=0;

}

}

flag=1;首先设置为非法,即全

for(i=j2;i

{

if(atoi(dot[i])!

=255)

{

中国计量学院现代科技学院课程设计报告P.20

flag=0;

}

}

if(flag==1)

{

cout<<"ip地址"<

"<

returnfalse;

}

}

returntrue;

}

判断子网号subnet是否合法

boolipTest:

:

subnetIsValid(char*subnet)

{

if(!

ipIsValid(subnet))调用判断Ip的函数ipIsValid()进行判断

{

returnfalse;

}

returntrue;

}

判断ip是否为子网成员,并输出判断结果

voidipTest:

:

print()

{

charsubnet_one[15],ip

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2