理学与信息科学学院计算机网络综合实习报告题目IP地址合法验证专业计算机科学与技术学号姓名指导教师日期2019年10月26日-1-目录一、任务和目的.................................................................................................................................-2-二、设计要求.....................................................................................................................................-2-三、设计内容.....................................................................................................................................-2-3.1、基本原理....................................................................................................................-2-3.1.1、IP地址合法性...............................................................................................-2-3.1.2、子网判断........................................................................................................-2-3.2、程序流程图................................................................................................................-2-3.3结果与分析...................................................................................................................-4-3.4、源代码........................................................................................................................-7-四、改进和建议...............................................................................................................................-14-五、感悟与心得...............................................................................................................................-14-六、参考文献...................................................................................................................................-14--2-一、任务和目的编写程序,实现判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。从而考察读者是否对IP地址及其子网的划分有非常清楚的认识。二、设计要求结合自身所学知识编写程序(任意语言均可),实现判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。运行结果要有图形操作界面。设计登录界面以及操作界面。输入内容:账号、密码、IP地址、子网掩码以及给定子网。三、设计内容3.1、基本原理3.1.1、IP地址合法性第一种情况、IP地址格式输入不合时,要滤掉全部情况,例如输入的为一串字符串;第二正情况、就是IP地址公式输入不合法时,要过滤掉一些特殊的地址,如全为0对应当前主机,全为1则对应当前子网的有限广播地址,所以首先要过滤这两个地址;第三种情况、IP的值被分割成四个值,对这四个值有统一的要求,就是0-255的整数,同时要考虑IP地址的第一个字节不能为零的情况,这个可以用正则表达式来进行匹配。除此之外,还要判断输入的子网掩码是否合法,计算出来的网络地址,主机地址是否合法。3.1.2、子网判断子网判断的前提时要输入子网地址,在设计的过程中采用子网与网络号进行匹配,当给定子网的地址与网络地址相同时,说明地址在给定子网中,否则不在给定子网中。3.2、程序流程图-3-开始用户登录输入IP地址输入子网掩码合法?合法?网络地址、主机地址是否合法?输入网络地址属于?结束NYNYNYNNYYY-4-3.3结果与分析1、登录界面2、操作界面-5-3、测试IP地址合法性-6-4、测试子网掩码合法性-7-5、判定子网3.4、源代码登陆界面namespaceip{publicpartialclassForm1:Form{publicForm1()-8-{InitializeComponent();}privatevoidbutton2_Click(objectsender,EventArgse){foreach(ControlchildControlinthis.Controls){if(childControlisTextBox)((TextBox)childControl).Text=;}}privatevoidbutton1_Click(objectsender,EventArgse){inti=0;stringstrcon=server=DESKTOP-RADS474;DataBase=IP验证;IntegratedSecurity=True;SqlConnectionsqlcon=newSqlConnection(strcon);stringstrcom=selectpwdfromyonghuwhereid='+textBox1.Text+'andpwd='+textBox2.Text+';SqlCommandsqlcom=newSqlCommand(strcom,sqlcon);sqlcon.Open();SqlDataReadersqldr=sqlcom.ExecuteReader();while(sqldr.Read()){i++;}if(textBox1.Text!=&&textBox2.Text!=){if(i==0){MessageBox.Show(请输入正确的账号密码!);}else{MessageBox.Show(登陆成功);Form2frm2=newForm2();frm2.Show();}}else-9-{MessageBox.Show(账号密码不能为空!);}sqlcon.Close();}privatevoidtextBox1_TextChanged(objectsender,EventArgse){}}}操作界面namespaceip{publicpartialclassForm2:Form{publicForm2(){InitializeComponent();}publicboolIsCorrectIP(stringip)//判断IP地址合法{stringpattrn=@(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]);if(System.Text.RegularExpressions.Regex.IsMatch(ip,pattrn)){returntrue;}else{returnfalse;}}publicboolIsCorrectMask(stringm)//判断子网掩码合法{stringpattrn=(254|252|248|240|224|192|128|0)\\.0\\.0\\.0|+255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|+255\\.255\\.(254|252|248|240|224|192|128|0)\\.|+255\\.255\\.255\\.(254|252|248|240|224|192|128|0);if(System.Text.RegularExpressions.Regex.IsMatch(m,pattrn))returntrue;-10-elsereturnfalse;}privatevoidlabel5_Click(objectsender,EventArgse){}privatevoidbutton6_Click(objectsender,EventArgse){if(textBox3.Text==)MessageBox.Show(网络地址不合法!);else{if(textBox5.Text==)MessageBox.Show(请输入子网地址);else{//拆分网络地址inti=0;stringstrr0;strr0=textBox3.Text;char[]separator3={'.'};int[]arr5=newint[4];string[]splitstrings3=newstring[100];splitstrings3=strr0.Split(separator3);for(i=0;isplitstrings3.Length;i++){arr5[i]=Convert.ToInt32(splitstrings3[i]);}//拆分子网stringstrr1=;stringstrr2=;stringstrr3=;strr1=textBox5.Text;int[]arr6=newint[4];string[]splitstrings4=newstring[100];splitstrings4=strr1.Split(separator3);for(intj=0;j4;j++){arr6[j]=Convert.ToInt32(splitstrings4[j]);}//子网位与网络位相与for(i=0;i4;i++)-11-{arr5[i]=arr5[i]&arr6[i];}for(i=0;i4;i++){if(i==3)strr3+=Convert.ToString(arr5[i]);elsestrr3+=Convert.ToString(arr5[i])+.;}//显示基本信息if(strr1.CompareTo(strr3)==0&&strr3.CompareTo(0.0.0.0)!=0){label7.Text=给定子网地址:+textBox5.Text+\n该主机网络号:+textBox3.Text;MessageBox.Show(属于给定子网);}elseMessageBox.Show(不属于给定子网);}}}privatevoidbutton4_Click(objectsender,EventArgse)//重置textbox{foreach(ControlchildControlinthis.Controls){if(childC