计算机网络课程设计.docx
《计算机网络课程设计.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
计算机网络课程设计
滨江学院
课程设计
报
告
学年学期2010-2011学年第二学期
课程名称计算机网络课程设计
院系计算机系
专业网络工程
学号
姓名
指导教师
二O一一年六月三十日
摘要
本机网络信息管理器提供了有关计算机性能的信息,并显示了计算机上主要设备信息;如果连接到网络,那么还可以查看网络状态并迅速了解网络是如何工作的。
它的用户界面提供了设置网络信息的选项,其下还有具体的内容设置,而且这里可以查看到当前系统的CPU使用比率、内存等数据,默认设置下系统每隔两秒钟对数据进行1次自动更新。
现在是网络的社会,在应用网络的同时也要对计算机的信息进行保护,因而需要进行本地计算机网络信息管理,使得我们更好的进行计算机的运用。
以及对信息的管理和保护。
因而有了这样的一个课程设计。
一绪论
本文所介绍的网络信息管理系统是基于开放的C#应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,更有效的反映本机的网络设置状况,易于维护和更新,其运行所需环境及其工作流程和各个功能控件的工作原理将在本文依次介绍,并且文中提供了部分程序源代码。
1IP/TCP协议常识
(1)IP、TCP协议的特点:
TCP/IP(TransmissionControlProtocol/InternetProtocol)是传输控制协议/网际协议的缩写,TCP/IP是当今网络互联的核心协议。
TCP/IP协议的体系结构共有四个层次,即应用层、传输层、网络互联层和网络接口层。
IP协议的作用:
第一,它是网络层的协议,提供互联网上数据传输的统一格式。
第二,提供不可靠的无连接的服务。
第三,定义了互联网上的传输数据的基本单元,提供了供路由选择的信息,没有差错校验和处理的机制。
TCP协议的功能:
差错控制——可靠性、面向连接、分段(Segment)、端口号。
TCP是传输控制协议,是面向连接的提供了一种可靠的传输服务,它用三次握手和滑动窗口机制来保证传输的可靠性,及进行流量控制。
TCP/IP协议具有以下特点:
协议标准具有开放性,其独立于特定的计算机硬件及操作系统,可以免费使用。
统一分配网络地址,使得每个TCP/IP设备在网络中都具有唯一的IP地址。
实现了高层协议的标准化,能为用户提供多种可靠的服务。
(2)TCP/IP协议进行传输数据传输的过程:
应用程序为了传输数据会调用TCP,将数据和对应的参数传给TCP,将TCP数据包封装在IP包内,通过网络送给目的TCP。
接收方TCP在接收到数据后通知上层应用程序,TCP将保证接收数据的正确性。
在实现TCP的主机上,TCP可以被看成是一个模块,和文件系统区别不大,TCP也可以调用一些操作系统的功能,TCP不直接和网络打交道,控制网络的任务由专门的设备驱动模块完成。
TCP只是调用IP接口,向TCP提供所有TCP需要的服务。
(3)端口号:
有的时候,一个ip地址不能完整的标识一台服务器,这是应为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以就在传输层和应用层上设置接口,就是端口。
端口实际是一个16位长的地址,他的范围是0~65535之间,其中0~1023是熟知端口,主要是给提供服务的应用程序使用,这些端口是所有应用进程都只道的,1024~65535为一般端口,也称动态端口、连接端口,用来随时分配要求通信的个客户端应用程序。
在数据传输过程中,各种服务器不断的检测分配给他的端口,一边发现要求和他通信的客户端。
2WindowsManagementInstrumentation,Windows管理规范
WMI(WindowsManagementInstrumentation,Windows管理规范)是一项核心的Windows管理技术;用户可以使用WMI管理本地和远程计算机。
Windows2K/XP和Windows98都支持WMI;如果为NT4.0和Windows95加上了ServicePack4或更高版本,N
WMIT4.0和Win95也支持WMI。
因此,用WMI进行远程管理时,并非一定要用Windows2K/XP(当然,如果WMI脚本在一台没有性能监视器的Win9x机器上运行,就不能在远程Win9x系统上查询Windows2K/XP的性能监视器。
如前所述,WMI允许通过一个公共的接口访问多种操作系统构成单元,因此不必分别对待各种底层接口或所谓的“提供者”。
利用WMI可以高效地管理远程和本地的计算机;与此相对,并非所有的Windows2K/XP命令行工具都支持远程运行。
WMI是WBEM模型的一种实现。
WBEM即Web-BasedEnterpriseManagement,或基于Web的企业管理,WBEM由DMTF(DistributedManagementTaskForce,分布式管理任务组)在许多厂商的帮助下创立,包括Compaq、Sun、Microsoft等。
WBEM的目标是,为管理企业环境开发一个标准的接口集。
WBEM模型最关键的部分是它的数据模型(或描述和定义对象的方式)、编码规范(EncodingSpecification),以及在客户端和服务器端之间传输数据的模式。
WBEM的数据模型是CIM(CommonInformationModel,公共信息模型)。
CIM是一个用来命名计算机的物理和逻辑单元的标准的命名系统(或称为命名模式),例如硬盘的逻辑分区、正在运行的应用的一个实例,或者一条电缆。
CIM是一个面向对象的模型,使用一组面向对象的术语进行描述。
CIM包含类(Class),类是被管理单元的模板。
类的实例称为对象(Object),对象代表着底层系统的一个具体单元。
名称空间(Namespace)是一个类的集合,每个名称空间面向一个特定的管理领域。
类包含属性(Property)和方法(Method)。
CIM分三层。
第一层是核心模型(CoreModel),这一层包含的类定义对于所有管理领域来说都是共同的。
第二层是公共模型(CommonModel),这一层包含的类定义对于特定的管理领域来说是公共的,但与具体的操作系统和系统设计无关。
第三层是扩展模型(Extensionmodel),这一层包含的类定义与特定的操作系统或技术有关。
WMI是Microsoft扩展CIM2.0得到的面向Win32系统的扩展模型。
引用WMI类和属性的形式是“扩展前缀_类名称.属性名称”,例如Win32_ComputerSystem.Name,其中Win32是CIM模式cimv2名称空间内WMI扩展类的前缀,ComputerSystem是类,Name是属性。
编写WMI脚本的很大一部分工作涉及到读取和设置属性值。
当前,WMI提供的方法还很有限,但随着时间的推移,相信WMI和CIM提供的方法都会越来越丰富。
二规划设计
本信息管理系统分为三个部分:
1.首先是,是对本机的基本信息的获取,包括CPU、内存等,以及网络信息的获取,包括域名、工作组等,最后还用CPU、内存等使用情况的监视。
2.其次,是对本机的所有可用网络适配器的设置,包括IP地址、子网掩码、DNS服务器地址等等。
3.然后,是对本机的共享内容的管理,包括共享文件夹的添加和取消,网络服务的查看等。
4.最后,是对所有本机网络连接的监控和统计。
三系统分析与设计方案
1信息管理系统的总体设计要点
1.本系统以实用为主,实现的都是用户最常用的功能,简化了系统自带的软件的使用。
2.本系统界面设计直观,易用性强
2系统各功能模块
(1)本机基本信息获取使用了PerformanceCounter和WMI等方式获取系统信息,以及通过读取注册表读取本机操作系统信息,通过线程的方式监控系统性能。
源码:
PerformanceCounterpc=newPerformanceCounter("Memory","AvailableMBytes");
PerformanceCountercpu=newPerformanceCounter("Processor","%ProcessorTime","_Total");
Threadm_thread;
[DllImport("IpHlpApi.dll")]
externstaticpublicuintGetIfTable(byte[]pIfTable,refuintpdwSize,boolbOrder);
publicForm1()
{
newForm2().Show();
InitializeComponent();
RegistryKeyrk;
DirectoryEntryroot=newDirectoryEntry("WinNT:
");
stringstrDomain=null,cpuid=null,meo=null;
foreach(DirectoryEntryDomaininroot.Children)
{
//枚举工作组或域
strDomain=strDomain+""+Domain.Name;
}
ManagementClassmClass=newManagementClass("Win32_Processor");
ManagementObjectCollectionmoCollection=mClass.GetInstances();
foreach(ManagementObjectmObjectinmoCollection)
{
cpuid+=mObject["Name"].ToString()+"";
}
mClass=newManagementClass("Win32_PhysicalMemory");
moCollection=mClass.GetInstances();
foreach(ManagementObjectmObjectinmoCollection)
{
meo+=mObject["Capacity"].ToString();
}
rk=Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\WindowsNT\\CurrentVersion");
label6.Text=System.Environment.MachineName;
label8.Text=System.Net.Dns.GetHostEntry("LocalHost").HostName;
label9.Text=rk.GetValue("ProductName").ToString()+""+rk.GetValue("CurrentVersion").ToString()+"."+rk.GetValue("CurrentBuildNumber").ToString();
label10.Text=strDomain;
label11.Text=cpuid;
label12.Text=meo+"字节";
progressBar1.Maximum=(int)(float.Parse(meo)/1048576.0);
m_thread=newThread(newThreadStart(workr));
m_thread.IsBackground=true;
m_thread.Start();
ManagementClassmc=newManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollectionmoc=mc.GetInstances();
foreach(ManagementObjectmoinmoc)
{
if((bool)mo["IPEnabled"]==true)
comboBox1.Items.Add(mo["Description"].ToString());
}
comboBox1.Enabled=true;
mc=newManagementClass("Win32_Service");
moc=mc.GetInstances();
foreach(ManagementObjectmoinmoc)
{
if(mo["StartName"].ToString()=="NTAUTHORITY\\NetworkService")
comboBox2.Items.Add(mo["Caption"].ToString());
}
comboBox2.Enabled=true;
mc.Dispose();
moc.Dispose();
maskedTextBox1.AllowPromptAsInput=false;
privatedelegatevoiddfun();
privatevoidworkr(){while(true){Thread.Sleep(500);work();}}
privatevoidwork()
{
if(this.progressBar1.InvokeRequired&&this.progressBar2.InvokeRequired)
{
try
{
dfundf=newdfun(work);
this.Invoke(df);
}
catch{};
}
else
{
this.progressBar1.Value=(int)this.pc.NextValue();
this.label13.Text=this.progressBar1.Value.ToString()+"MB/"+this.progressBar1.Maximum.ToString()+"MB";
this.progressBar2.Value=(int)cpu.NextValue();
this.label16.Text=DateTime.Now.ToString();
}
}
(2)网络设置部分主要通过WMI获取和设置本机网络适配器的信息和设置,可以自动获取当前可用的适配器,同时,能对不符合规范的的设置进行提示。
具体的源码如下:
privatevoidcomboBox1_SelectionChangeCommitted(objectsender,EventArgse)
{
ManagementObjectSearcherquery=new
ManagementObjectSearcher("SELECT*FROMWin32_NetworkAdapterConfigurationWHEREIPEnabled='TRUE'");
ManagementObjectCollectionqueryCollection=query.Get();
foreach(ManagementObjectmoinqueryCollection)
{
if(mo["Description"].ToString()==comboBox1.Text)
{
string[]ipad=(string[])mo["IPAddress"];
label23.Text=ipad[0];
string[]subnets=(string[])mo["IPSubnet"];
label24.Text=subnets[0];
string[]defaultgateways=(string[])mo["DefaultIPGateway"];
if(defaultgateways!
=null)
label27.Text=defaultgateways[0];
elselabel27.Text="";
label26.Text=mo["MACAddress"].ToString();
string[]dns=(string[])mo["DNSServerSearchOrder"];
if(dns!
=null)
label28.Text=dns[0];
elseif(dns==null)
label29.Text="";
elseif(dns.Length==2)
label29.Text=dns[1];
else{label29.Text="";}
}
}
}
/*
privatevoidbutton3_Click(objectsender,EventArgse)
{
string[]mac=maskedTextBox5.Text.Split(':
');
stringpstr="^[0-9a-fA-F]+$";
stringma="";
for(intn=0;n<5;n++)
if(!
Regex.IsMatch(mac[n],pstr))
{
MessageBox.Show("MAC地址为16进制,即00~FF","错误");
gotoL1;
}
elsema+=mac[n]+":
";
ma=ma.Substring(0,ma.Length-1);
ManagementClassmc=newManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollectionmoc=mc.GetInstances();
foreach(ManagementObjectmoinmoc)
{
if((bool)mo["IPEnabled"])
{
if(mo["Description"].ToString()==comboBox1.Text)
{
ManagementBaseObjectnewMAC=mo.GetMethodParameters("SetMACAddress");
newMAC["MACAddress"]=newstring[]{ma};
ManagementBaseObjectsetMAC=mo.InvokeMethod("SetMACAddress",newMAC,null);
label26.Text=mo["MACAddress"].ToString();
mc.Dispose();
}
}
}
L1:
;
}
*/
privatevoidbutton2_Click(objectsender,EventArgse)
{
stringpstr="0.0.0.0";
stringGateStr="",DnsStr="",DnsbStr="";
boolgat,dn,dnb;
gat=false;
dn=false;
dnb=false;
string[]gate=maskedTextBox6.Text.Split('.');
string[]dns=maskedTextBox7.Text.Split('.');
string[]dnsb=maskedTextBox2.Text.Split('.');
if(!
maskedTextBox6.Text.Equals(pstr))
{
for(intn=0;n<4;n++)
if(int.Parse(gate[n])>255||int.Parse(gate[n])<0)
{
MessageBox.Show("IP数值不对!
数值为1~255","错误");
gotoL4;
}
else
{
GateStr+=(gate[n].Trim()+".");
}
GateStr=GateStr.Substring(0,GateStr.Length-1);
gat=true;
}
if(!
maskedTextBox7.Text.Equals(pstr))
{
for(intn=0;n<4;n++)
if(int.Parse(dns[n])>255||int.Parse(gate[n])<0)
{
MessageBox.Show("IP数值不对!
数值为1~255","错误");
gotoL4;
}
for(inti=0;i<=3;i++)
{
DnsStr+=(dns[i].Trim()+".");
}
DnsStr=DnsStr.Substring(0,DnsStr.Length-1);
dn=true;
}
if(!
maskedTextBox2.Text.Equals(pstr))
{
for(intn=0;n<4;n++)
if(int.Parse(dnsb[n])>255||int.Parse(gate[n])<0)
{
MessageBox.Show("IP数值不对!
数值为1~255","错误");
gotoL4;
}
for(inti=0;i<=3;i++)
{
DnsbStr+=(dnsb[i].Trim()+".");
}
DnsbStr=DnsbStr.Substring(0,DnsbStr.Length-1);
dnb=true;
}
ManagementClassmc=newManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollectionmoc=mc.GetInstances();
foreach(ManagementObjectmoinmoc)
{
if((bool)mo["IPEnabled"])
{
if(mo["Description"].ToString()==comboBox1.Text)
{
if(gat==true)
{
ManagementBaseObjectnewGate=mo.GetMethodParameters("SetGateways");
newGate["DefaultI