IP地址的合法性及子网判断计算机网络系统设计书_第1页
IP地址的合法性及子网判断计算机网络系统设计书_第2页
IP地址的合法性及子网判断计算机网络系统设计书_第3页
IP地址的合法性及子网判断计算机网络系统设计书_第4页
IP地址的合法性及子网判断计算机网络系统设计书_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第一章 概述 程设计目的 本设计要求编写程序,判断一个 址是否合法,并判断该地址是否是属于一个给定的子网。从而考察读者是否对 址概念及子网划分有非常清楚的认识。 程设计的要求 在掌握 址的表示方法及指望划分方法的基础上,按如下要求完成程序。 1) 命令行格式: 中 , 程序名; 子网好; 一个数值,代表子网掩码连续 1 的个数; 要测试的 址。 例如,要测试的 址为 网号为 网掩 码 为 则 没 命 令 行 为 4 因为 连续的 24 个 1,所以用 24 表示。) 2) 判断 合法性。 在判断 址的合法性是要自行编写代码,不要用任何的 数。判断是要考虑全面,比如以下 地址的合法性: 2 123. ) 判断掩码的合法性。 4) 在 址合法的前提下,判断 否属于子网 5) 输入命令行中的 否合法,掩码是否合法(可适当给出不合法原因)以及 否属于子网 3 第二章 具体设计 计思路 根据以上的要求,并结合当前的所学的一些知识和技术,我们最终通过另一种方式来实现相同的功能,但代码更加优化,高效,方便用户的窗体程序。 对于以上的要求,设计思路如下: 1. 程序大致流程 1) 分别判断子网号,掩码和 址的基本格式的合法性。 2) 如果三者的基本格式都合法,才调用判定“ 址是否为子网成员”的函数。该函数同时判别子网号和掩码是否匹配,子网号为全 0或全 1, 主机号为全 0、全 1。 2. 核心代码及说明 判断 址 是否合法,才调用判定“ 址是否为子网成员”的函数。该函数同时判断子网号与掩码是否匹配,子网号为全 0 或全 1,主机号为全 0、全 1. 3. 核心代码及说明 1) 判断 址是否合法。 一般来说,我们先检查最明显的错误。例如,可以先判断 “ .”的个数是否正确;接着,以“ .”为标志将 符串按节分开;然后,4 看该 否为 4 段,再判断各节是否是 0255 间的整数。关于网络号、主机号全 0 全 1 等问题要在后面结合子网掩码一起判断。 这里德关键是怎么样将 符串以“ .”为标志按节分开,这要用到函数 第一个参数是给定的串,第二 个参数是分隔符集合,该函数的功能就是以 包含的任意字符为分隔符,在 寻找下一个 一次调用 ,都会在 插入一个 符,所以,如果要读取下一个 下来调用 第一个参数用 这样, 的每一段都放到 组里了,下面判断是否有非法字符,每一段的值是否在 0255 之间,就很容易了。 2) 判断 址是否为子网成员,判断子网号与掩码是否匹配,以及子网号、主机号全 0、全 1 的问题 程图如下: 当用户 启动程序后 (如图 ,在输入框中 输入 网、子网掩码,然后点击测试,验证其合法性。 在此过程中调用子程序 图 子程序中判断输入的 址是否合法(其中包括: P 长度是否合法; P 是否含有非法字符; P 格式是否正确; P 是否已转化为 实例)。 跳回到主程序中继续执行, 如果 网、子网掩码都合法, 调用子程序 图 在子程序中完成 判断子网号和子网掩码是否匹配,如果匹配则进一步判读子 网号是否为全 0 或全 1,否则输出子网号和子网掩码不匹配提示。接下来,如果子网号不为全 0 或全 1 则将 掩码做“与”运算,结果和子网号比较,否则输出子网号为全 0 或全 1 提示。再接下来,判断比5 较结果( 掩码做“与”运算的结果和子网号的比较结果)是否相等,如果相等则判断主机号是否为全 0 或全 1,如果不相等则输出“ 属于该子网”。最后,如果主机号为全 0或全 1则输出主机号为全 0或全 1提示,如果主机号不为全 0 或全 1 则输出“ 于该子网”。 子程序执行完后返回主程序中继续执行,然后完成 址是否属于给定子网的判定 6 输入 网,掩码 点击检测按钮 计算子网号 属于? 输出结果 提示出错 计算 验证合法性 N Y 结束 开始 图 7 图 程图 8 图 心 源代码分析与说明 ; ; /声明子网号 *以下代码为单击检测按钮后执行相关的操作,程序首先清空 * 显示框 后检测由用户输入的 * 子网号,以及子网掩码的合法性,通过调用函数 * 合法返回 合法返回 输出错误 * 信息,若验证通过,计算 后通过 * 给出的数据将 将结 * 果与给出的子网号进行比较,判断并输出该 * 给定的子网号 */ e) /清空 的内容 10 ; /获取用户输入的 址 ; /获取子网掩码 ,子网号 ,子网掩码是否合法 ! 址输入错误 !, 提示 ); ! 子网号输入错误 !, 提示 ); ! 子网掩码错误 !, 提示 ); 本次计算结果如下: ); 转化为二进制形式为 :); / / 转化为二进制形式为: + / 与子网掩码进行与运算 ); / ; /b in / ); 11 / /); / ); / ); /); f /*以下代码为子程序 处为方便编写, * 直接写在了主程序体中,基本思路是按流程图走的,首先判断 * 子网号与掩码是否匹配,接着检测子网号是否为全 0或全 1的情况, * 接着检测主机号为全 0或全 1的情况,最后判断计算出的子网号是 * 否与给定的子网号相同,并输出结果信息 */ /说明子网号与掩码不匹配 = 子网号与掩码不匹配, ); 0, ( ; 0, /说明子网号全 1 =0) 子网号全 1, ); /说明子网号全 0 =0) 子网号全为 0, ); /掩码做 与 运算,结果和子网号比较 (ip& 12 /; /说明主机号全 0 ( = 主机号为全 0, ); /说明主机号全 1 ( = 0 主机号全 1, ); 该 于子网 + /; 该 属于子网 + /1, 2); / / 判断输入的 址类型是否合法 ,合法返回 合法返回( 13 (d0,3.d0,3.d0,3.d0,3); /判断输入的 字符串能否转化为 ! /判断 度是否合法 if(32) / / / 将十进制 化为二进制 / / / 14 ; .); /拆分 ); ); ); ); /将拆分后的 址重新组合起来 输入地址类型有错! ,可能包含其他字符。,警告 ); / / 得到二进制 (P) P, 2); ,返回无符号整数形式 / / / , 0); / / 向 添加测试的结果 / / / / 获取 址的类型 / / 0) 该 于 A 类网络 ); 10) 16 该 于 B 类网络 ); 110) 该 于 C 类网络 ); 1110) 该 于 D 类网络 ); 11110) 该 于 E 类网络 ); 址计算错误! ); e) /*以下代码为清空按钮中的内容,作用是将各 * 个输入框中的内容清空 */ e) ; ; 17 ; 18 第三章 结果分析与总结 果与分析 程序截图: 19 运行时 截图: 分析: 1001010011100010001000000001010 子网掩码 化为二进制位11111111111111111111111100000000 他们相与之后为 11001010011100010001000000000000 化为点分十进制为 程序计算的结果符合结果,正确。 20 分析: 当 址用点分 十进制表示时, 如 由于输入的 址为 不符合要求所以,程序提示出错。 21 分析: 当 址用点分十进制表示时,应该为 4 字节,每个字节表示的范围在 0间,而且每个字节之间用点号分隔。由于输入的 址为 字节,所以程序提示出错。 22 分析: 址只能由数字组成,而输入的 址中出现了非数字的字符 f,所以程序提示出错。 结 本次我们采用 c#语言作为工具,来书写我们的代码, 设计了一个的窗体应用程序。在此次设计中对关于 合法性的检测和对地址与掩码相与运算上出现了些许问题。在 址的合法性判断上 我们采用正则表达式匹配字符的方法,这是种简洁快速的判定方法。再次就是如何把用户输入的 址(字符串类型)转化为二进制的 32 位数,来和已知的掩码做与运算。在这个问题上我们想到了三种方法。 方法一: 23 我们把用户输入的 址(字符串类型)先转化成整型数值,然后与掩码相与得到子网号,但是这中方法会 出现转化为整型的 址的大小超出了 32 位整型数的范围,所以我们放弃了这种方法。 方法二: 把用户输入的 址(字符串类型),先分别分成 4 个部分,存入在一个数组中,同样我们把子网掩码也做同样的处理存入一个数组。然后我们分别把这两个数组相同位序的数分别相与得到相与后的结果再存入另一个数组,最后把这个数组转化为一个字符串就得到了我们想要的 址与子网掩码相与后的子网号了。这种方法克服了第一种方法的类型长度不匹配的情况,是可以在程序中实现的。 方法三: 把用户输入的 址(字符串类型),先通过 c#内置的 化为字节数组,然后再用 字节数组转化 32位无符号的二进制数,子网掩码也做同样的处理, 然后即可以相与的到我们想要的结果的。方法三使用了 c#语言内置的函数,使得代码更加的高效,简洁,这也是方法三优越方法二的地方,所以我们就采用了方法三。 该程序参考了课程设计指导书上的部分内容,同时也对其进行了部分改进,由于书上的代码是用 C+编写,同时是在 面下进行操作,缺乏良好

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论