计算机网络课程设计验证ip地址附源代码Word下载.docx
《计算机网络课程设计验证ip地址附源代码Word下载.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计验证ip地址附源代码Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
第一种情况、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
登陆成功"
Form2frm2=newForm2();
frm2.Show();
账号密码不能为空!
sqlcon.Close();
privatevoidtextBox1_TextChanged(objectsender,EventArgse)
}
操作界面
publicpartialclassForm2:
publicForm2()
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;
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))
privatevoidlabel5_Click(objectsender,EventArgse)
privatevoidbutton6_Click(objectsender,EventArgse)
if(textBox3.Text=="
网络地址不合法!
if(textBox5.Text=="
请输入子网地址"
//拆分网络地址
stringstrr0;
strr0=textBox3.Text;
char[]separator3={'
.'
};
int[]arr5=newint[4];
string[]splitstrings3=newstring[100];
splitstrings3=strr0.Split(separator3);
for(i=0;
i<
splitstrings3.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;
j<
4;
j++)
arr6[j]=Convert.ToInt32(splitstrings4[j]);
//子网位与网络位相与
arr5[i]=arr5[i]&
arr6[i];
if(i==3)
strr3+=Convert.ToString(arr5[i]);
strr3+=Convert.ToString(arr5[i])+"
."
//显示基本信息
if(strr1.CompareTo(strr3)==0&
strr3.CompareTo("
0.0.0.0"
)!
=0)
label7.Text="
给定子网地址:
+textBox5.Text+"
\n该主机网络号:
+textBox3.Text;
属于给定子网"
不属于给定子网"
privatevoidbutton4_Click(objectsender,EventArgse)//重置textbox
stringIPA;
IPA=textBox1.Text;
if(textBox1.Text=="
请输入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))
该IP地址不合法!
该IP地址合法!
IPA=textBox2.Text;
if(textBox2.Text=="
请输入子网掩码地址!
elseif(IsCorrectMask(IPA))
该子网掩码地址合法"
该子网掩码地址不合法"
privatevoidbutton3_Click(objectsender,EventArgse)
//拆分IP地址
strr0=textBox1.Text;
//拆分子网掩码
strr1=textBox2.Text;
//IP地址与子网掩码相与
arr6[i]=arr5[i]&
strr3+=Convert.ToString(arr6[i]);
strr3+=Convert.ToString(arr6[i])+"
textBox3.Text=strr3;
char[]separator4={'
int[]arr7=newint[4];
string[]splitstrings5=newstring[100];
splitstrings5=strr3.Split(separator4);
splitstrings5.Length;
arr7[i]=Convert.ToInt32(splitstrings5[i]);
//IP地址与网络地址相减
arr7[i]=arr5[i]-arr7[i];
strr2+=Convert.ToString(arr7[i]);
strr2+=Convert.ToString(arr7[i])+"
textBox4.Text=strr2;
privatevoidbutton5_Click(objectsender,EventArgse)
this.Close();
四、改进和建议
登录界面通过访问数据库判定用户账号密码信息。
将操作界面得到的结果保存到TXT文件或数据库中实现信息的保存。
五、感悟与心得
通过这次课程设计我收获很多,在学习方面,通过上网和到图书馆借书查阅资料使我更加深入的学习力C#程序开发语言并利用我所学到的知识完成了本次课程设计。
另一方面,也使我体会到了团队合作的重要性。
虽然本次课程设计是需要独自完成,但在设计的过程中难免会遇到难题,这时请教同学或老师变成了良好的选择。
和同学老师一起探讨问题,思想就会变得全面,考虑问题变得更加多元,是我们可以进款的找到问题的所在。
使得程序更加的完善。
这次课程设计充分锻炼、增强了我的程序设计能力,使我加深了对理论知识的理解和掌握。
充分体会到了理论固然重要,如果没有实践去检验,那也只是停留在理论层面上,它的实现意义将无法得到体现。
所以,这次课程设计是理论与实践的结合,增强了我的个人实践能力。
六、参考文献
C#应用开发与实践;
CSDN博客
综合实习成绩评定表
学生姓名
专业班级
设计题目
指导教师评语及意见:
指导教师评阅成绩:
指导教师签字:
年月日
注:
此表装订在课程设计之后。