计算机网络课程设计验证ip地址附源代码.docx

上传人:b****6 文档编号:4392505 上传时间:2022-12-01 格式:DOCX 页数:15 大小:1.10MB
下载 相关 举报
计算机网络课程设计验证ip地址附源代码.docx_第1页
第1页 / 共15页
计算机网络课程设计验证ip地址附源代码.docx_第2页
第2页 / 共15页
计算机网络课程设计验证ip地址附源代码.docx_第3页
第3页 / 共15页
计算机网络课程设计验证ip地址附源代码.docx_第4页
第4页 / 共15页
计算机网络课程设计验证ip地址附源代码.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

计算机网络课程设计验证ip地址附源代码.docx

《计算机网络课程设计验证ip地址附源代码.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计验证ip地址附源代码.docx(15页珍藏版)》请在冰豆网上搜索。

计算机网络课程设计验证ip地址附源代码.docx

计算机网络课程设计验证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博客

综合实习成绩评定表

学生姓名

专业班级

设计题目

指导教师评语及意见:

 

指导教师评阅成绩:

指导教师签字:

年月日

 

注:

此表装订在课程设计之后。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

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

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