计算机网络课程设计验证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博客
综合实习成绩评定表
学生姓名
专业班级
设计题目
指导教师评语及意见:
指导教师评阅成绩:
指导教师签字:
年月日
注:
此表装订在课程设计之后。