计算机网络课程设计验证ip地址附源代码.docx
- 文档编号:4392505
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:15
- 大小:1.10MB
计算机网络课程设计验证ip地址附源代码.docx
《计算机网络课程设计验证ip地址附源代码.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计验证ip地址附源代码.docx(15页珍藏版)》请在冰豆网上搜索。
计算机网络课程设计验证ip地址附源代码
理学与信息科学学院
计算机网络综合实习报告
题目IP地址合法验证
专业计算机科学与技术
学号
姓名
指导教师
日期2019年10月26日
一、任务和目的
编写程序,实现判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。
从而考察读者是否对IP地址及其子网的划分有非常清楚的认识。
二、设计要求
结合自身所学知识编写程序(任意语言均可),实现判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。
运行结果要有图形操作界面。
设计登录界面以及操作界面。
输入内容:
账号、密码、IP地址、子网掩码以及给定子网。
三、设计内容
3.1、基本原理
3.1.1、IP地址合法性
第一种情况、IP地址格式输入不合时,要滤掉全部情况,例如输入的为一串字符串;第二正情况、就是IP地址公式输入不合法时,要过滤掉一些特殊的地址,如全为0对应当前主机,全为1则对应当前子网的有限广播地址,所以首先要过滤这两个地址;第三种情况、IP的值被分割成四个值,对这四个值有统一的要求,就是0-255的整数,同时要考虑IP地址的第一个字节不能为零的情况,这个可以用正则表达式来进行匹配。
除此之外,还要判断输入的子网掩码是否合法,计算出来的网络地址,主机地址是否合法。
3.1.2、子网判断
子网判断的前提时要输入子网地址,在设计的过程中采用子网与网络号进行匹配,当给定子网的地址与网络地址相同时,说明地址在给定子网中,否则不在给定子网中。
3.2、程序流程图
3.3结果与分析
1、登录界面
2、操作界面
3、测试IP地址合法性
4、测试子网掩码合法性
5、判定子网
3.4、源代码
登陆界面
namespaceip
{
publicpartialclassForm1:
Form
{
publicForm1()
{
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
{
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;
else
returnfalse;
}
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;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;j<4;j++) { arr6[j]=Convert.ToInt32(splitstrings4[j]); } //子网位与网络位相与 for(i=0;i<4;i++) { arr5[i]=arr5[i]&arr6[i]; } for(i=0;i<4;i++) { if(i==3) strr3+=Convert.ToString(arr5[i]); else strr3+=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("属于给定子网"); } else MessageBox.Show("不属于给定子网"); } } } privatevoidbutton4_Click(objectsender,EventArgse)//重置textbox { foreach(ControlchildControlinthis.Controls) { if(childControlisTextBox) ((TextBox)childControl).Text=""; } } privatevoidbutton1_Click(objectsender,EventArgse) { stringIPA; IPA=textBox1.Text; if(textBox1.Text=="") { MessageBox.Show("请输入IP地址! "); } elseif(IsCorrectIP(IPA)) { stringstr=textBox1.Text; char[]separator={'.'}; string[]splitstrings=newstring[100]; splitstrings=str.Split(separator); if(Convert.ToInt32(splitstrings[0])==0&&Convert.ToInt32(splitstrings[1])==0&& Convert.ToInt32(splitstrings[2])==0&&Convert.ToInt32(splitstrings[3])==0|| (Convert.ToInt32(splitstrings[0])>=255||Convert.ToInt32(splitstrings[1])>=255|| Convert.ToInt32(splitstrings[2])>=255||Convert.ToInt32(splitstrings[3])>=255)) { MessageBox.Show("该IP地址不合法! "); } else MessageBox.Show("该IP地址合法! "); } else MessageBox.Show("该IP地址不合法! "); } privatevoidbutton2_Click(objectsender,EventArgse) { stringIPA; IPA=textBox2.Text; if(textBox2.Text=="") { MessageBox.Show("请输入子网掩码地址! "); } elseif(IsCorrectMask(IPA)) { MessageBox.Show("该子网掩码地址合法"); } else { MessageBox.Show("该子网掩码地址不合法"); } } privatevoidbutton3_Click(objectsender,EventArgse) { //拆分IP地址 inti=0; stringstrr0; strr0=textBox1.Text; char[]separator3={'.'}; int[]arr5=newint[4]; string[]splitstrings3=newstring[100]; splitstrings3=strr0.Split(separator3); for(i=0;i { arr5[i]=Convert.ToInt32(splitstrings3[i]); } //拆分子网掩码 stringstrr1=""; stringstrr2=""; stringstrr3=""; strr1=textBox2.Text; int[]arr6=newint[4]; string[]splitstrings4=newstring[100]; splitstrings4=strr1.Split(separator3); for(intj=0;j<4;j++) { arr6[j]=Convert.ToInt32(splitstrings4[j]); } //IP地址与子网掩码相与 for(i=0;i<4;i++) { arr6[i]=arr5[i]&arr6[i]; } for(i=0;i<4;i++) { if(i==3) strr3+=Convert.ToString(arr6[i]); else strr3+=Convert.ToString(arr6[i])+"."; } textBox3.Text=strr3; char[]separator4={'.'}; int[]arr7=newint[4]; string[]splitstrings5=newstring[100]; splitstrings5=strr3.Split(separator4); for(i=0;i { arr7[i]=Convert.ToInt32(splitstrings5[i]); } //IP地址与网络地址相减 for(i=0;i<4;i++) { arr7[i]=arr5[i]-arr7[i]; } for(i=0;i<4;i++) { if(i==3) strr2+=Convert.ToString(arr7[i]); else strr2+=Convert.ToString(arr7[i])+"."; } textBox4.Text=strr2; } privatevoidbutton5_Click(objectsender,EventArgse) { this.Close(); } } } 四、改进和建议 登录界面通过访问数据库判定用户账号密码信息。 将操作界面得到的结果保存到TXT文件或数据库中实现信息的保存。 五、感悟与心得 通过这次课程设计我收获很多,在学习方面,通过上网和到图书馆借书查阅资料使我更加深入的学习力C#程序开发语言并利用我所学到的知识完成了本次课程设计。 另一方面,也使我体会到了团队合作的重要性。 虽然本次课程设计是需要独自完成,但在设计的过程中难免会遇到难题,这时请教同学或老师变成了良好的选择。 和同学老师一起探讨问题,思想就会变得全面,考虑问题变得更加多元,是我们可以进款的找到问题的所在。 使得程序更加的完善。 这次课程设计充分锻炼、增强了我的程序设计能力,使我加深了对理论知识的理解和掌握。 充分体会到了理论固然重要,如果没有实践去检验,那也只是停留在理论层面上,它的实现意义将无法得到体现。 所以,这次课程设计是理论与实践的结合,增强了我的个人实践能力。 六、参考文献 C#应用开发与实践;CSDN博客 综合实习成绩评定表 学生姓名 专业班级 设计题目 指导教师评语及意见: 指导教师评阅成绩: 指导教师签字: 年月日 注: 此表装订在课程设计之后。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计 验证 ip 地址 源代码