- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机网络判断ip地址的合法性及子网判断
计算机网络课程设计报告
一题目:判断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表示)。
判断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。
二:概要设计
1属性:int flag//用于判断ip地址,子网掩码是否合法,如果不合法重新输入,flag=1,表示不合法
int i//判断是否存在非法字符
int dian//定义分割符
2 方法:toCharArray()//使用此方法把用户输入的字符串转换成新的字符数组
Length()//返回用户输入的字符串的长度
Split()//拆分字符串
Parseint()//将字符串参数作为有符号的十进制整数进行解析
Concat()//连接字符串
Equals()//比较两个字符串是否相等
3类 input()
Iptest()
Subnet()
三:详细设计(由流程图解释)
算法思想:主要分为两部分:一:ip地址的合法性
二:是否属于该子网
一:ip地址的合法性:
参考谢希仁编著的计算机网络,
IP地址采用分层结构,由网络号与主机号两部分组成(如下图所示):
网络号 主机号 IP地址长度为32位,用点分十进制表示,格式为ⅹ.ⅹ.ⅹ.ⅹ,每个ⅹ为8位,每个ⅹ的值为0—255(例如202.113.29.119)。根据不同的取值范围,IP地址可以分为五类,IP地址中的前5位用于标识IP地址的类别,具体的分类规则如下:
·A类地址的第一位为0。
·B类地址的前两位为10 .
·C类地址的前三位为110。
·D类地址的前四位为1110。
·E类地址的前五位为11110
例如以下IP地址均不合法:
123..2.1
123.23$.2.1
123.2345.2.1
123.23.45.1。
四类IP地址的结构如下所示;
0 网络号(7位) 主机号(24位) 10 网络号(14位) 主机号(16位) 110 网络号(21位) 主机号(8位) 1110 组播地址(28位) 二:是否属于该子网
首先判断掩码的合法性。
无论是哪类地址,掩码的第一个字段都是255。如果不是,一定是掩码非法。在IP地址、掩码以及子网号都合法的前提下,判断ip是否属于subnet。需要进行与运算(),将ip、subnet_mask相与,将得到的结果与subnet比较,如果相同,则证明该ip属于subnet。
四:调试分析
在程序最终完成后,进入调试过程中出现了好多错误,但大部分都是拼写错误,还有就是很久没有写程序,一些基本的语法错误,但经过调试后都解决了,下面是调试的结果的截图:
1连续输入两个“。”,显示输入非法
.
2输入字段中有大于255或小于0的现象,显示输入非法
3子网掩码地址第一字段不是255,显示输入非法
4得出结果——ip地址属于子网
分析: 其实就是利用split()将用户手动输入的ip地址和subnet_mask以“.”为界限分为四个小段,并将它们赋值给String类,然后分别将它们转化为int类型,逐段相与,再将相与得到的四小段以“.”为分隔符“拼接”起来,最后一步是将最后得到的这一字符串与之前输入的subnet比较,如果相同则该ip地址输入subnet。
五:心得体会
通过这次的课程设计,我明白了,在学习理论的基础上还要利用课余时间多做一些实践性的实验,不能只会纸上谈兵。最初写这个题目的时候我是一脸茫然,于是我就去图书馆接有关网络课程设计方面的书,看看书中的内容,再结合平时所学的理论知识,我把我要写的题目的思路想了出来,但实践起来也不是很容易,由于我对C++不是很熟,所以我试着写,但还是没有一点思路,最后我决定用java写,我又参考了网上别人的程序,最后写了出来,但不能运行,主要是程序中
文档评论(0)