VisualC#之制作IP设置程序.docx
- 文档编号:5010375
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:34
- 大小:267.16KB
VisualC#之制作IP设置程序.docx
《VisualC#之制作IP设置程序.docx》由会员分享,可在线阅读,更多相关《VisualC#之制作IP设置程序.docx(34页珍藏版)》请在冰豆网上搜索。
VisualC#之制作IP设置程序
第18章IP设置程序
随着计算机网络技术的飞速发展,越来越多的企事业单位员工会面临需要频繁更换计算机IP地址的情况。
例如一所笔记本大学,学生在不同的教室、图书馆或者宿舍,如果需要访问网络,就必须不断的更改笔记本电脑的IP地址。
然而使用Windows自带的IP设置程序的操作比较复杂,本章介绍的IP设置程序旨在解决这一类的问题。
说明:
“笔记本大学”是一个新的概念,是指那些所有学生都有一台用于学习的笔记本电脑的大学。
本章将详细介绍如何使用VisualC#2008设计一个这样的IP设置程序。
从中不仅可以进一步掌握ListBox(列表框)、ComboBox(组合框)等控件的使用,同时还能学会使用MaskedTextBox控件来限制用户对IP地址的输入格式,从而能防止输入无效的IP地址等。
并且通过学习本章的知识,能够掌握一些关于IP地址、WMI(WindowsManagementInstrumentation,Windows管理规范)等方面的知识,还能进一步的掌握一些字符串的操作方法以及文本文件的访问方法。
18.1IP设置程序简介
随着教育事业与计算机信息技术的高速发展,目前已涌现出越来越多的笔记本大学,即每一位学生都配有一个笔记本电脑,这样,不管是在课堂上还是课后,都可以充分的利用网络资源,达到更好的学习效果。
然而,在使用网络资源的时候不得不面临这样一个问题,即因为学习地点不确定,学生往往需要在教室、图书馆或者宿舍等地使用计算机访问网络,这就不得不频繁的更换本机的IP地址。
然而使用操作系统(如:
WindowsXP)自带的IP地址修改工具在操作方便性等方面上往往不尽如人意,因此,设计一个使用简单、操作方便、又能快速的更改IP的工具是十分必要的。
一般来说,笔记本大学的每个教室的座位数都在两百以内,因此使用的IP地址为C类IP地址,或使用其他类别的IP地址,但需要使用子网掩码来划分子网,然而不管哪种情况,一般都是IP地址(二进制)的前24位表示网络地址(网络号),后8位表示主机地址(主机号)。
本章介绍的IP设置程序旨在解决符合这些情况的问题,当然,它不仅仅能方便的应用到笔记本大学,同时,也能应用在那些类似的需要频繁更换IP地址的企事业单位或者个人。
18.2准备知识
本章介绍的IP设置程序的设计,需要掌握一些基础知识,如IP地址的概念及分类、Split()函数、MastedTextBox控件、WMI(WindowsManagementInstrumentation的简写,即Windows管理规范)。
本节将分别对这些知识进行介绍。
18.2.1IP地址及子网和掩码
IP地址即Internet地址,通常也叫互联网地址。
IP地址是用来唯一标识互联网上计算机的逻辑地址。
每台连网的计算机都用IP地址来标识自己,并依靠IP地址与互联网上的其他站点互相区分、相互联系。
因此,IP地址必须唯一。
为了保证IP地址的唯一性,IP地址由统一的组织负责分配。
IP地址在整个IP协议规范中处于很重要的地位。
1.IP地址的表示
IP地址的长度为32位(4个字节),采用点分十进制数表示方法,即每个地址被表示为4个以小数点隔开的十进制整数,每个整数对应1个字节,如168.23.18.123。
32位的IP地址由网络号和主机号两部分构成。
其中,网络号就是网络地址,用于标识某个网络。
主机号则用于标识在该网络上的一台特定的主机。
位于相同物理网络上的所有主机具有相同的网络号,如图18-1所示。
图18-1IP地址的表示
2.IP地址的分类
为了适应于不同规模的物理网络,一般将IP地址分为A、B、C、D、E五类,但在Internet上可分配使用的IP地址实际上只有A、B、C三类。
这三类地址统称为单目传送(unicast)地址,因为这些地址通常只能分配给唯一的一台主机。
D类地址被称为组播(multicast)地址,组播地址可用于视频广播或视频点播系统,而E类地址尚未使用,保留给将来的特殊用途。
不同类别的IP地址的网络号和主机号的长度划分不同,它们所能识别购物理网络的数量不同,每个物理网络所能容纳的主机个数也不同。
如图18-2所示。
图18-2IP地址格式与分类
A类地址的第一个字节的最高位为“0”,网络号占1个字节(8位),主机号占3个字节(24位)。
A类地址可识别128个不同的物理网络或虚拟网,每个A类子网可容纳1600万台主机。
B类地址的第一个字节的前2位是“10”,网络号占2个字节(16位),主机号占2个字节(16位)。
B类地址可识别16384个不同的物理网络或虚拟网,每个B类子网可容纳65536台主机。
C类地址的第一个字节的前3位为“110”,网络号占3个字节(24位),主机号占1个字节(8位)。
C类地址可识别200万个不同的物理网络或虚拟网,每个C类子网内最多有256台主机。
D类地址的前4位为“1110”,E类地址的前5位为“11110”。
根据A、B、C、D、E的高位数值,可以总结出它们的第一个字节的取值范围,如A类地址的第一个字节的数值在1~126之间。
表18-1给出了每种地址类别第一个字节的取值范围。
表18-1各类IP地址的取值范围
地址类别
高位
第一个字节的十进制数
A
0
1~126
B
10
128~191
C
110
192~223
D
1110
224~239
E
11110
240~254
从表18-1可以看到,原本属于A类地址范围的IP地址127.0.0.0~127.255.255.255却没有包含在A类地址之中。
这是因为,任何一个以数字127开头的IP地址(127.X.X.X)都叫做回送地址(loopbackaddress),它是一个保留地址,最常见的一种为127.0.0.1。
每台主机上对应于IP地址127.0.0.1有个接口,称为回送接口(loopbackinterface)。
IP协议规定,当任何程序向回送地址发送数据包时,计算机上的协议软件不会把该数据包向网络上发送,而是把数据直接发送给本主机。
因此,网络号等于127的数据包不能出现在任何网络上,主机和路由器不能为该地址广播任何寻径信息。
3.子网
在广播式的网络技术中,广播信息会在同一个广播域(同一个物理网络或同一个逻辑网络)中传播。
因此,在一个广播域中,如果网络站点过多,大量的广播信息在网上传送,会导致网络的性能急剧下降。
为此,在实际的网络设计中,要求属于同一个广播域的网络规模不能太大,主机数不能过多。
而A类和B类地址的每个网络都包容了大量的主机地址。
一个包容1600万台(A类)或6万多台(B类)主机的单一物理网络几乎是不可能实现的。
另外,它们的主机号部分也是很浪费的。
在Internet迅速发展的今天,IP地址已经成为极为珍贵的资源。
为了解决以上两个问题,提出了子网(subnet)和掩码(mask)的概念。
通过将IP地址的主机号部分进一步划分为子网号和主机号的方法,把一个包含大量主机的网络划分成许多小的网络,每个小的网络就是一个子网。
每个子网都是一个独立的逻辑网络、独立的广播域。
它可以隔离广播信息,缩小广播域,以提高网络性能。
划分子网后使网络便于管理和隔离故障,提高网络的可靠性,而且还可以更有效地利用IP地址空间。
4.掩码
掩码用来确定如何划分IP地址的网络号、子网号和主机号,它可将主机地址部分进一步划分为子网地址和主机地址。
掩码是一个与IP地址相对应的32位数字。
它和IP地址一样也用4个点分十进制数表示,如255.255.255.0。
掩码的一些位为1,另一些位为0。
二进制位为“1”所对应的IP地址位是网络号和子网号。
掩码的二进制位为“0”所对应的IP地址位是主机号。
这样通过掩码将IP地址中的主机地址段再分为子网号和主机号,使网络号的位数加长,其结果是不但把大网划分成了若干个小网,而且还增加了网络的个数。
这时的网络地址应为网络号加子网号,它们共同标识一个网络。
如IP地址168.23.18.123,原本是一个B类地址,它的前两个字节是网络号,标准掩码255.255.0.0,网络地址是168.23.0.0。
如果掩码设置为255.255.255.0,则第3个字节变为子网号,第4个字节仍为主机号,其网络地址为168.23.18.0。
原则上掩码的0和1可以任意分布,不过一般在设计时,把掩码开始连续的几位设为1。
可以认为掩码是对地址分类的扩展,它加大了地址分配的灵活性。
A、B、C类地址各自的标准掩码,分别为255.0.0.0、255.255.0.0和255.255.255.0。
这三类地址都可以用掩码将其主机号部分再进行划分,即使是C类也不例外。
如一个C类网络地址202.112.42.0,可以利用掩码255.255.255.224,把该网络分为8个子网,每个子网的网络地址是:
202.112.42.0,202.112.42.32,202.112.42.64,202.112.42.96,202.112.42.128,202.112.42.160,202.112.42.192,202.112.42.224,且每个子网内最多可有30台主机(网络地址和广播地址各占用一个IP)。
IP地址的网络号和子网号加上主机号部分的所有位为“0”的地址被定义为网络地址,如168.23.0.0。
网络地址是非常重要的,数据包寻径就基于目的网络地址。
用IP地址和掩码进行二进制与运算则得到网络地址。
IP地址的网络地址部分为“0”,加上主机号被定义为主机地址,如0.0.18.123。
18.2.2Split()函数
Split()函数是一个字符串操作函数,它用于以某个字符为界将一个字符串分成多个子字符串,以字符串数组的形式返回。
例如:
//*************************************************************************
stringstr="188.23.18.123";
string[]strPart=str.Split('.');
//*************************************************************************
上述代码执行后,字符串数组strPart[]中有四个元素,分别为"188"、"23"、"18"和"123",即将字符串"188.23.18.123"以字符'.'为界分开的四个子字符串。
18.2.3MaskedTextBox控件
相对于.NETFramework1.1,.NETFramework2.0、.NETFramework3.5等版本中新增一个名为MaskedTextBox的类,它位于命名空间“System.Windows.Forms”中,其作用是使用掩码区分正确和不正确的用户输入,常用于输入IP地址。
在设计Windows应用程序时,可以直接使用工具箱中的MaskedTextBox控件。
添加MaskedTextBox控件后,其外观如图18-3所示。
图18-3MaskedTextBox
从外观上看,似乎与TextBox一样,但MaskedTextBox控件具有一些特殊的属性,用于控制用户的输入,下面介绍一下本章的IP设置程序需要用到的几个属性。
1.Mask属性
Mask属性用于设置控制MaskedTextBox控件允许输入的字符串。
例如将Mask属性设为“###.###.###.###”,表示该MaskedTextBox中只能输入4组(每组3个)数字,共12个数字,中间用字符'.'隔开。
设置后的MaskedTextBox控件外观如图18-4所示。
图18-4设置Mask属性
2.PromptChar属性
PromptChar属性用于指示用作占位符的字符。
其默认值为下划线字符'_'。
例如设置MaskedTextBox控件的Mask属为“###.###.###.###”后,其外观如图18-4所示,若希望不使用下划线而使用空格指示字符占位符,则将PromptChar属性设为空格字符('')即可,设置后的MaskedTextBox控件外观如图18-5所示。
图18-5设置PromptChar属性
18.2.4WMI
WMI(Windows管理规范)是英文WindowsManagementInstrumentation的简写,WMI的功能主要是:
访问本地主机的一些信息和服务,当然也可以管理远程计算机(在拥有足够的权限的前提下),比如:
重启,关机,关闭进程,创建进程等。
具体说来,WMI具有以下作用:
(1)获取本地和远程计算机的硬件软件信息(例如获取本地计算机的磁盘信息、获取本地计算机的网络设置等)。
(2)监视本地和远程计算机的软件和服务等运行状况。
(3)控制本地和远程计算机的软件和服务运行。
(4)其他高级应用。
WMI最初于1998年作为一个附加组件与WindowsNT4.0ServicePack4一起发行,是内置在Windows2000、WindowsXP和WindowsServer2003系列操作系统中核心的管理支持技术。
基于由DistributedManagementTaskForce(DMTF)所监督的业界标准,WMI是一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的Windows资源。
大多用户习惯于使用众多的图形化管理工具来管理Windows资源,在WMI之前这些工具都是通过Win32应用程序编程接口(ApplicationProgrammingInterfaces,API)来访问和管理Windows资源的。
熟悉系统编程都知道AP是非常重要的。
但是大多数脚本语言都不能直接调用Win32API,WMI的出现使得系统管理员可以通过一种简便的方法即利用常见的脚本语言实现常用的系统管理任务。
Win32_NetworkAdapterConfiguration类是WMI的一个常用类,用于完成对计算机网络适配器的配置。
WMI提供了Win32_NetworkAdapterConfiguration类的这些属性和方法,可用来自动完成客户端的网络配置。
其中本章介绍的IP设置程序需要用到的一些属性和方法如下:
(1)IPEnabled属性
IPEnabled属性是一个布尔(bool)类型的值,用于表示TCP/IP在该网络适配器上是否可用。
(2)IPAddress[]属性
IPAddress[]属性表示与当前网络适配器相关联的IP地址数组。
(3)DefaultIPGateway[]属性
DefaultIPGateway[]属性表示缺省网关的IP地址数组。
(4)DNSServerSearchOrder[]属性
DNSServerSearchOrder[]属性表示DNS服务器地址数组。
(5)EnableStatic()方法
EnableStatic()方法有两个参数,其原型为:
uint32EnableStatic(stringIPAddress[],stringSubnetMask[]),表示启用静态的TCP/IP设置。
(6)SetGateWays()方法
SetGateWays()方法有两个参数,其原型为:
uint32SetGateWays(stringDefaultIPGateway[],uint16GateWayCostMetric[]),用于指定一系列的网关。
(7)SetDNSServerSearchOrder()方法
SetDNSServerSearchOrder()方法有一个参数,其原型为:
uint32SetDNSServerSearchOrder(stringDNSServerSearchOrder[]),表示以数组的形式传入DNS服务器地址列表。
另外,本章介绍的IP设置程序还用到了ManagementClass类的GetMethodParameters()方法和InvokeMethod()方法。
其中GetMethodParameters()方法有一个名为methodName的字符串参数,它用于获取methodName方法的参数列表;InvokeMethod()方法是对WMI对象调用的方法。
18.3IP设置程序的用户界面
对于本章介绍的IP设置程序来说,简单易用、操作方便是至关重要的,因为设计该IP设置程序的目的就是为了解决操作系统中自带的IP修改工具操作麻烦的问题。
因此,设计一个好的用户界面是非常关键的,本节将介绍IP设置程序用户界面的设计以及窗体和窗体上各对象的属性设置。
18.3.1界面设计
本小节介绍IP设置程序的用户界面设计、用户界面各对象的说明,以及IP设置程序的使用和操作方法。
1.用户界面设计
打开VisualC#2008开发工具,新建一个名为“IPSet”的Windows应用程序,然后使用PictureBox、Label、ComboBox、GroupBox、TextBox、MakedTextBox、Button以及ListBox控件将用户界面设计成如图18-6所示(按照表18-2给出的信息设置好窗体及窗体上各控件的属性后的界面)。
图18-6IP设置程序用户界面
2.界面说明及操作方法
用户界面中左上角的网卡列表列出了本计算机的所有可用网络适配器,选择不同的网络适配器则对不同的网络适配器对应的网络配置进行操作。
用户界面中右上角的标签控件中显示当前使用的IP地址。
用户界面中右边的【教室号及其对应的网络号】用于添加教室名称及其对应的网络地址信息(这些信息均保存在程序可执行文件路径下的一个名为“IPList.ini”的文件中),所有的信息都显示在列表框中。
界面左下方【修改网络设置】是用户设置本机网络配置的地方,其操作方法为:
首先在【教室号】组合框中选择当前所在的教室编号(或者在右边的列表框中选中该教室及网络地址列表项),这时会在【主机号】文本框中自动生成一个主机号(即C类二进制IP地址的后8位),若不希望更改成自动生成的主机号,可直接在【主机号】文本框中修改,接下来再修改好子网掩码和网关以及DNS服务器地址,最后单击【修改】按钮来设置本机的网络配置,在发生【主机号】输入错误或者IP冲突等异常等情况时,系统报错。
18.3.2属性设置
为窗体添加好控件后,应设置各对象的属性。
表18-2给出了IP设置程序用户界面中的窗体和窗体上各控件的属性设置情况。
表18-2窗体和各控件的属性设置
控件类型
控件名称
属性
设置结果
Form
Form1
Name
frmIPSet
Text
IP设置
StartPosition
CenterScreen
MaximizeBox
False
AutoSizeMode
GrowAndShrink
BackColor
Window
Icon
选择IPSet图标(可以在本书的源代码文件中找到)
PictureBox
PictureBox1
Image
选择网卡图片(可以在本书的源代码文件中找到)
GroupBox
GroupBox1
Text
修改网络设置
GroupBox2
Text
IP地址
GroupBox3
Text
子网掩码和网关
GroupBox4
Text
DNS服务器地址
GroupBox5
Text
教室号及其对应的网络号
ComboBox
ComboBox1
Name
cmbConn
DropDownStyle
DropDownList
ComboBox2
Name
cmbClassroomNum
Label
Label1
Text
当前IP地址:
Label2
Name
lblIP
Text
“”(清空)
AutoSize
False
Label3
Text
教室号
Label4
Text
主机号
Label5
Text
子网掩码
Label6
Text
网关
Label7
Text
首先地址
Label8
Text
备用地址
Label9
Text
教室
Label10
Text
网络地址
Label11
Text
教室号
Label12
Text
(如:
A101)
Label13
Text
网络号
Label14
Text
(尾数为0)
Label15
Text
(如:
188.23.18.0)
TextBox
TextBox1
Name
txtHostNum
MaxLength
3
TextBox2
Name
txtClassroomNum
MaxLength
4
MaskedTextBox
MaskedTextBox1
Name
mtxtSubNetwork
Mask
###.###.###.###
PromptChar
''(一个空格字符)
MaskedTextBox2
Name
mtxtGateway
Mask
###.###.###.###
PromptChar
''(一个空格字符)
MaskedTextBox3
Name
mtxtDNS1
Mask
###.###.###.###
PromptChar
''(一个空格字符)
MaskedTextBox4
Name
mtxtDNS2
Mask
###.###.###.###
PromptChar
''(一个空格字符)
MaskedTextBox5
Name
mtxtNetworkNum
Mask
###.###.###.#
PromptChar
''(一个空格字符)
Button
Button1
Name
btnSet
Text
修改
Button2
Name
btnClose
Text
退出
Button3
Name
btnInsert
Text
添加教室号及其对应的网络号
ListBox
ListBox1
Name
lstNum
18.4编写程序代码
用户界面设计完毕后,接下来的工作便是编写程序代码,因为IP设置程序程序需要使用到WMI,因此首先添加对WMI的引用,打开【解决方案资源管理器】,在【引用】项上单击右键,并选择【添加引用】菜单项,如图18-7所示。
图18-7添加引用
选择【添加引用】菜单项后,将会弹出如图18-8所示的【添加引用】对话框窗口,选择【.NET】选项卡中的System.Management组件,然后单击【确定】按钮即可。
图18-8【添加引用】对话框
接下来打开项目的代码编辑器编写程序代码,首先为项目添加两个分别用于设置网络配置和读写文本文件的命名空间,代码如下:
//*************************************************************************
usingSystem.Management;//访问网络设置
usingSystem.IO;//读写文本文件
//*************************************************************************
程序中需要用到几个公共变量,因此需要在代码的通用段(frmIPSet类)中,定义这些公共变量,代码如下:
//*********************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualC 制作 IP 设置 程序