ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:325.89KB ,
资源ID:5221821      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5221821.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(IP地址的合法性及子网判断JAVA.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、IP地址的合法性及子网判断JAVAIP地址的合法性及子网判断-JAVA学 号: 0121010680221课 程 设 计题 目IP地址的合法性及子网判断学 院计算机科学与技术学院专 业软件工程班 级1002姓 名王思腾指导教师刘东飞2013年6月 19日 6 心得感悟。14课程设计任务书学生姓名: 王思腾 专业班级: 软件1002班 指导教师: 刘东飞 工作单位: 计算机学院 题目四: IP地址的合法性及子网判断 初始条件:(1)学习相关知识(2)C/C+/VC/VB/JAVA语言(3)PC机一台要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)在掌握IP地址表

2、示方法及子网划分的基础上,按如下要求完成程序。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地址合法性时要自行

3、编写代码,不要使用任何inet函数。判断时要考虑全面,比如以下IP地址均不合法:123.2.1 / 123.23$.2.1 / 123.2345.2.1 / 123.23.45.2.13)判断掩码的合法性。4)在IP地址合法的前提下,判断ip_addr是否属于子网subnet。5)输出命令行中的ip是否合法,掩码是否合法(可适当给出不合法的原因)以及ip_addr是否属于子网subnet。时间安排:第一、二天:查阅资料,学习算法第三、四天:编程调试第五天:书写报告指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日2、相关知识:1. IP地址相关概念所谓IP地址就是给每个连接在In

4、ternet上的主机分配的一个32bit地址。 按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“”分开不同的字节。于是,上面的IP地址可以表示为“10001”。IP地址的这种表示法叫做“点分十进制表示法”,

5、这显然比1和0容易记忆得多。 大型的互连网络中应该有一个全局的地址系统,它能够给连接到互联网的每一台主机或者路由器分配一个唯一的全局地址。TCP/IP协议的网络层使用的地址标识符叫做IP地址,IPv4中IP地址是一个32位的二进制地址。网络中的每一台主机或者路由器至少有一个IP地址,在Internet中不允许有两个设备具有相同的IP地址。如果一台主机或者路由器连接到两个或多个物理网络,那么它可以拥有两个或多个IP地址。IP地址采用分层结构,由网络号与主机号两部分组成(如下图所示):网络号主机号IP地址长度为32位,用点分十进制表示,格式为.,每个为8位,每个的值为0255(例如202.113.

6、29.119)。根据不同的取值范围,IP地址可以分为五类,IP地址中的前5位用于标识IP地址的类别,具体的分类规则如下:A类地址的第一位为0。B类地址的前两位为10 .C类地址的前三位为110。D类地址的前四位为1110。E类地址的前五位为11110。五类IP地址的结构如下所示;0网络号(7位)主机号(24位)10网络号(14位)主机号(16位)110网络号(21位)主机号(8位)1110组播地址(28位)11110保留用于课程设计和将来使用A类IP地址结构适合用于有大量主机的大型网络。由于主机号长度为24位,因此每个A类网络的主机IP数理论上为224=16777216。B类IP地址适合用于一

7、些国际性大公司与政府机构等中等大小的组织。由于网络IP长度为14位,因此允许有214=16384个不同的B类网络,实际允许连接16382个网络。C类IP地址适合用于一些小公司与普通的研究机构。2. 特殊的IP地址形式(1) 直接广播地址A类,B类,C类IP地址中主机号全1的地址称为直接广播地址,用来使路由器将一个分组以广播方式发送给特定网络上的所有主机。直接广播地址只能作为分组中的目的地址。物理网络采用的是点点传输方式,分组广播需要通过软件来实现。网络号主机号全1(2)受限广播地址网络号与主机号的32位全位1的地址为受限广播地址,用来将一个分组以广播方式发送给本网的所有主机。本网的所有主机将接

8、受该分组,路由器则阻挡该分组通过。全1(3) “这个网络上的这台主机”地址全0(4)“这个网络上的特定主机”地址主机或路由器向本网络上的某个特定的主机发送分组,网络号部分为全0,主机号为确定的值。这样的分组被相知在本网络内部。网络号全0主机号(5)回送地址回送地址用于网络软件测试和本地进程见通信。TCP/IP协议规定网络号为127的分组不能出现在任何网络上;主机和路由器不能为该地址广播任何寻址信息。127任意值(通常取1)3子网的划分人们在早期设计与建设ARPAnet是,没有预料到网络的发展速度如此之快,应用范围如此之广。当时个人计算机与局域网尚未出现。所以,研究者在设计Internet地址的

9、编址方案时,主要是针对大型互联的网络结构。设计IP地址的最初目的是希望每个IP得志都能唯一地、确定地识别一个网络与一台主机,但是这种方法同时也存在着两个主要的问题,即IP地址的有效利用率和路由器的工作效率。为了解决这个问题,人们提出了子网(subnet)和超网(supernet)的概念。子网就是一个大的网络划分成几个较小的网络,而每一个小网络都是其自己的地址。超网就是将一个组织所属的几个C类网络合并成为一个更大地址范围的逻辑网络。划分子网实际上就是在IP地址系统中增加一个层次。三级IP地址的表示方法为netID-subnet ID-host ID。第一级网络号定义了网点的位置;第二级子网号定义

10、了物理子网;第三级主机号定义了主机和路由器到物理网络的连接。三级层次的IP地址,一个IP分组的路由器的过程分为三步:第一步将分组转发给网点,第二步转发给物理子网,第三步转发给确切的主机。当三级层次的IP地址提出后,一个很显示的问题是:如何从一个IP地址提取出子网号。因此,提出了子网掩码(subnet mask)的概念。子网掩码有时也叫做子网掩码。子网掩码表示方法:网络号与子网号置1,主机号置0。如判断某一IP地址是否属于某一子网呢?只需将二进制IP地址与子网掩码按位进行“与”运算。若“与”运算所得值与给定子网地址一致,则说明该IP地址属于给定的子网。3、课程设计分析:在掌握IP地址的表示方法以

11、及子网划分方法的基础上,并以计算机网络中关于IP地址的相关理论知识为基石,运用C/C+语言按如下要求完成程序。3.1在判断一个IP地址合法性时要自行编写代码,不要使用任何inet函数3.2命令行格式: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_test202.113.16.0/24 202.113.16.1

12、0。(因为255.255.255.0是连续的24个1,所以用24表示)3.3判断subnet和ip_addr的合法性。在判断IP地址合法性时要自行编写代码,不要使用任何inet函数。判断时要考虑各种情况,全面分析问题。例如以下IP地址均不合法:123.2.1123.23$.2.1123.2345.2.1123.23.45.13.4判断掩码的合法性。无论是哪类地址,掩码的第一个字段都是255。如果不是,一定是掩码非法。3.5在IP地址、掩码以及子网号都合法的前提下,判断ip是否属于subnet。 需要进行与运算(&),将ip、subnet_mask相与,将得到的结果与subnet比较,如果相同,

13、则证明该ip属于subnet。3.6输出命令行中的ip是否合法,掩码是否合法,子网号码是否合法(可适当给出不合法的原因)以及ip是否属于子网subnet。3.7程序流程图:(见下页)4、程序清单及注释:package iptest;import java.util.*;class input Scanner scanner = new Scanner(System.in); String s= scanner.nextLine(); int flag; /判断输入的IP地址是否合法,如果不合法从新输入,flag=1为不合法; input() flag=0; char a=s.toCharArr

14、ay(); if(s.length()15) System.out.println(地址总长超过15); flag=1; for(int i=0;is.length();i+)/判断是否存在非法字符,分隔符只能为3个, if(ai9) & ai!=.) System.out.println(地址中包含非法字符!); flag=1; break; int dian=0; for(int i=0;is.length();i+)/判断是否存在非法字符,分隔符只能为3个, if(ai=.) dian+; if(dian!=3) System.out.println(地址中分隔符只能为3个!); fla

15、g=1; for(int i=0;is.length()-1;i+)/判断是否出现连续的分隔符 if(ai=. & ai+1=.) System.out.println(地址中不能出现连续的分隔符!); flag=1; break; if(as.length()-1=.)/判断是否最后位为分隔符 System.out.println(地址最后位不能为分隔符!); if(a0=.)/判断是否首位为分隔符 System.out.println(地址首位不能为分隔符!); flag=1; String sss=s.split(.); for(int o=0;osss.length;o+) for(i

16、nt p=0;p255|num0) System.out.println(ERROR!地址不在0至255之间!); flag=1; break; class subnet_mask extends input /*判断子网掩码第一个字节是否为255*/int flag2=0;/判断输入的子网掩码是否合法,如果不合法从新输入,flag=1表示输入错误; subnet_mask() String dian_s1=s.split(.); int first=Integer.parseInt(dian_s10); if(first!=255) System.out.println(地址第一字节不是25

17、5!); flag2=1; public class iptest public static void main(String g) System.out.println(请输入IP地址); input IP=new input(); while(IP.flag=1) System.out.println(输入IP地址有误,请重新输入IP地址:); input xin_IP=new input(); IP.s=xin_IP.s; if(xin_IP.flag=0) break; System.out.println(请输入子网号); input subnet=new input(); whi

18、le(subnet.flag=1) System.out.println(您输入的子网号有错误!请重新输入子网号:); input xin_subnet=new input(); subnet.s=xin_subnet.s; if(xin_subnet.flag=0) break; System.out.println(请输入子网掩码); subnet_mask new3=new subnet_mask(); while(new3.flag=1|new3.flag2=1) System.out.println(您输入的子网掩码有错误!请重新输入子网掩码:); input xin_new3=ne

19、w input(); new3.s=xin_new3.s; if(xin_new3.flag=0) break; /*判断输入的Ip地址是否属于子网*/ String s=IP.s; String s2=new3.s; String s3=subnet.s; String split_s=s.split(.); String split_s2=s2.split(.); System.out.println(您输入的IP地址是:+IP.s); System.out.println(您输入的子网地址是:+subnet.s); System.out.println(您输入的子网掩码是:+new3.s

20、); /得出 XX int x00=Integer.parseInt(split_s0); int x22=Integer.parseInt(split_s20); int and_x=x00&x22;/进行与运算 String right_mask =String.valueOf(and_x); /得出余下的.XX.XX.XX 并和之前得出的XX合并 for(int i=1;i4;i+) int x=Integer.parseInt(split_si); int x2=Integer.parseInt(split_s2i); int and_x12=x&x2;/进行与运算 String an

21、d_x11 =String.valueOf(and_x12); right_mask=right_mask.concat(.); right_mask=right_mask.concat(and_x11); /将得到的XX.XX.XX.XX和输入的子网掩码比较,如果相同,则证明属于,不同则不属于 if(right_mask.equals(s3) System.out.println(您输入的IP地址属于子网+subnet.s); else System.out.println(您输入的IP地址(+IP.s+)+不属于子网+subnet.s); 5、程序结果分析及结论: 5.1 连续输入两个“.

22、”,显示输入非法 5.2 输入字段中有大于255或小于0的现象,显示输入非法5.3 子网掩码地址的第一字段不是255,显示输入非法5.4 得出结果ip属于subnet5.5 得出结果ip不属于subnet分析: 其实就是利用split()将用户手动输入的ip地址和subnet_mask以“.”为界限分为四个小段,并将它们赋值给String类,然后分别将它们转化为int类型,逐段相与,再将相与得到的四小段以“.”为分隔符“拼接”起来,最后一步是将最后得到的这一字符串与之前输入的subnet比较,如果相同则该ip地址输入subnet。6感悟与体会这次最大的体会就是要找对方法,起初也是一头雾水,写了

23、几行代码发现其实一点进度都没有,冷静下来仔细思考之后其实并不难。判断一个ip地址是否属于一个子网,就是要将ip地址和子网掩码转化为二进制后相与,看得到的结果是否和子网相同,相同则属于。但是在这过程中还是绕了不少弯路。首先就是我们手动输入的地址,我们看到的虽是数字,但实际上是一串字符,所以我首先想到的是如果想进行与运算还是要将String类转化为int类。但是因为地址中间有三个“.”,因此在这之前还必须将这串字符正确划分。通过上网我查询到了split()这一用法,对我做这个实验的帮助非常大!而且非常简单易懂。然后就是一些细节问题,比如说将ip和子网掩码的四个小段逐段相与之后得到的四个小段是int

24、类,我们必须将这四个小段连接起来,中间添加连接符“.”。这个过程我觉得很简单,所以就想都没想就直接写了,但是编译之后却发现无论怎么输入显示的结果都是“不属于”,经过检查才发现原来是“.”的位置不当引起的,后来还是脚踏实地的用笔在纸上确认了一下步骤才最终运行调试成功。7 参考文献1.计算机网络 谢希仁 主编2XX百科split函数的用法本科课程论文评分标准班级软件工程1002学号0121010680221姓名王思腾论文题目IP地址的合法性及子网判断评阅点评分标准(细则)分值给分功能及算法(40分)正确实现本程序所需全部功能,算法设计正确合理且有一定创意40分实现所需功能,算法正确30分基本实现所需功能15分有明显重大错误5分无法实现程序功能0分界面和操作性(20分)界面美观、合理,可操作性强20分界面合理,可操作15分界面尚可,基本可操作10分可操作较差5分程序可读、可维护性(15分)程序可读性好、逻辑清晰,程序完整,可维护性好,15分程序可读、可维护10分基本可读可维护5分逻辑混乱、不可读0分论文质量(25分)论文规范,行文流畅,层次清晰25分论文书写基本规范,文理较通畅20分结构较合理,层次较清楚,基本符合要求15分结构混乱,文不对题目,或者有明显抄袭现象5分总分 教师签名:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1