毕设论文络网课程设计报告 ip地址的合法性及子网判断文档格式.docx
《毕设论文络网课程设计报告 ip地址的合法性及子网判断文档格式.docx》由会员分享,可在线阅读,更多相关《毕设论文络网课程设计报告 ip地址的合法性及子网判断文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
IP合法性和子网的判断
一、设计的目的和要求
1.目的
掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。
并判断该地址是否属于一个给定的子网。
判断IP地址属于ABC那类网。
2.要求
根据后面介绍的IP地址与子网划分的知识,编写程序判断IP地址的合法性及属于子网。
1)以命令行形式运行:
IPAddresssubnet_address/maskip_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.0/24192.168.1.55显示出现不属于该子网,这是错误的。
然后在(iSubA&
iMask)中发现了问题所在。
3.出现很多的地方少了},然后经过我详细的查找得以解决。
4.发现很多词语没有定义,然后经过查找发现定义类时,单词打错了。
中国计量学院现代科技学院课程设计报告P.5
(二)运行说明
程序编译成功后,打开cmd,然后打入cdd:
/kcsj/debug(程序生成的Debug文件路径下),再进行打入TestIP(程序文件名)192.168.1.0/24192.168.1.55(IPAddresssubnet_address/maskip_address),然后会出现运行结果,查看IP地址IP地址、子网地址、掩码的合法性,以及能判断该IP地址是否属于子网,和IP地址属于ABC那类网络。
(三)运行效果展示
(1)在命令提示窗口中输入命令:
TestIP192.1/33198.1.1;
TestIP256.1.1.0/24256.1.1.55
详细的判断IP地址、子网地址、掩码的合法性
中国计量学院现代科技学院课程设计报告P.6
(2)在命令提示窗口中输入命令:
TestIP19.16.1.0/2419.16.1.55
IP地址属于该子网,并且IP地址属于A类网
(3)在命令提示窗口中输入命令:
TestIP192.16.1.0/24168.125.168.192
IP地址不属于该子网,并且IP地址属于B类网
中国计量学院现代科技学院课程设计报告P.7
(4)在命令提示窗口中输入命令:
TestIP192.168.1.0/24192.168.2.55
IP地址不属于该子网,并且IP地址属于C类网
(5)在命令提示窗口中输入命令:
TestIP192.168.1.0/24192.168.1.55
IP地址属于该子网,并且IP地址属于C类网
中国计量学院现代科技学院课程设计报告P.8
五、设计体会与建议
这次课程设计,我收获了很多东西。
通过上网和到图书馆查阅资料,我更加深入的学习了C语言,并利用所学知识设计,充分锻炼,增强了我的程序设计能力,使我加深了对理论知识的理解和掌握。
充分体会到了理论固然重要,如果没有实践去验证,那也只是停在理论层面上,它的现实意义将无法得到体现。
所以,这次课程设计是理论与实践的结合,增强了我在这方面的能力。
通过这次课程设计,我更加深刻的理解了IP地址的合法性,IP地址与子网的从属关系,子网与子网掩码的关系。
在判断IP地址是否属于一个子网时,我对IP地址的分类以及子网划分有了更加深刻的理解。
在这次课程设计的过程中,我遇到了很多问题,但经过老师和同学的帮助,我解决了这些问题,并学到了很多知识,在此,对老师和同学表示真挚的感谢。
参考文献
[1]魏权龄.数据包络分析(DEA)[J].科学通报,2000,45(17):
1793-1808.
[2]张尧学,郭国强,王晓春,赵艳标。
计算机网络与Internet教程[第2版]。
清华大学出版社,2006,11。
[3]谢希仁,计算机网络(第5版),电子工业出版社,2008-01
[4]谢希仁,计算机网络释疑与习题解答,电子工业出版社,2011-04
[5]谭浩强,C++程序设计,清华大学出版社,2004-06
中国计量学院现代科技学院课程设计报告P.9
源代码
#include<
iostream>
stdlib.h>
stdio.h>
string.h>
math.h>
ctype.h>
usingnamespacestd;
//ipTest类定义
classipTest{
charip[15];
//用于存放ip地址
charip_Temp[15];
charsubnet_mask[18];
//用于存放subnet_mask地址
charsubnet[18];
//用于存放subnet地址
charsubnet_Temp[18];
intmask;
//用于存放mask(1的个数)
boolmaskIsValid;
//用于判断的个数是否合适,或是否与subnet匹配
public:
ipTest(char*,char*);
//自定义初始化类函数
~ipTest(){};
//析构函数
boolipIsValid(char*);
//判断ip是否合法
boolsubnetIsValid(char*);
//判断子网号subnet是否合法
boolNoIllegalChar(char*);
//ip,subnet地址中非法字符的判断
boolmaskIsMatSubnet(int,char*);
//判断mask与subnet是否匹配
voidAllJudgment();
//判断mask,subnet,ip的合法性问题
voidprint();
//判断ip是否为子网成员,并输出判断结果
voidsplit(char*,int*);
//把单个字符地址转换为十进制数值型地址(含四段)
inttoBinary(inta);
//十进制int型数据转换为二进制int型数据
char*toString(int*a);
//把二进制int型数据转换为一个整体的二进制字符型数据
};
//main主函数
intmain(intargc,char*argv[])//自动读取数据
{
//cout<
<
"
目录地址:
argv[0]<
endl;
//argv[0]表示ipTest.exe的保存目录地址
中国计量学院现代科技学院课程设计报告P.10
cout<
subnet_mask:
"
argv[1]<
//argv[1]表示第二个参数,即subnet/mask
cout<
ip地址:
argv[2]<
endl<
//argv[2]表示第三个参数,即ip
//判断段数是否输入合法
if(argc!
=3)//argc表示输入的参数个数,无参数输入时,其值为,因为默认argv[0]总是有的
{
cout<
输入非法!
;
return0;
}
else
//先简单判断subnet/mask的长度
if(strlen(argv[1])>
18)
{
cout<
subnet/mask输入非法!
system("
pause"
);
return0;
}
//先简单判断ip的长度
if(strlen(argv[2])>
15)
ip输入非法!
ipTesttest(argv[1],argv[2]);
//实例化类,传入两个参数
test.AllJudgment();
//调用函数,判断mask,subnet,ip的合法性问题
system("
//系统暂停
return0;
}
//构造函数
中国计量学院现代科技学院课程设计报告P.11
ipTest:
:
ipTest(char*subnet_mask,char*ip)
maskIsValid=true;
//设置maskIsValid默认为合法
chartemp[2];
//定义变量
inti,len;
len=strlen(subnet_mask);
/*******************从subnet/mask中分离出subnet地址***************/
for(i=0;
i<
len&
&
subnet_mask[i]!
=