-- 作者:admin
-- 发布时间:11/9/2004 2:25:00 AM
-- 用Visual C#获得计算机名称和IP地址
发信人: cataract (大瀑布来啦), 信区: DotNET 标 题: 用Visual C#获得计算机名称和IP地址 发信站: BBS 水木清华站 (Tue Dec 11 10:41:43 2001) 发信人: xixixi (wenwen), 信区: dotNET 标 题: 用Visual C#获得计算机名称和IP地址 发信站: 飘渺水云间 (Sun Dec 9 21:14:25 2001), 转信 Visual C#是微软公司推出的下一代程序开发语言,是微软.Net 框架中的的一个重 要组 成部分,在推出Visual C#的过程中,微软公司还推出了与之相对应的一个软件开 发包- -.Net FrameWork SDK。此软件开发包里面封装了许多类、对象。Visual C#就是通 过调 用这些类、对象来实现许多比较强大的功能。 在.Net FrameWork SDK中提供了二个可用于网络编程的名称空间,一个是System. Net, 另一个是System..Net.Socket。本文就是利用第一个名称空间中封装的类和对象来 读取 本地计算机名称和机器中所有的IP地址。 一.概述: 我们知道对于一台计算机来说,他只有一个计算机名称,但是他可以有多个IP地址 。例 如当计算机通过拨号上网的时候,在验证完用户名和口令以后,就会动态分配一个 IP地 址,此时计算机就拥有了二个IP地址,一个时自己设定的局域网用的IP地址,另外 一个 就是拨号上网动态分配的IP地址了。本文就是来探索一下如何读取此二个IP地址和 计算 机名称。 二.程序设计和运行的环境: (1)微软公司视窗2000服务器版 (2).Net FrameWrok SDK Beta 2版 三.程序设计的主要思路及实现方法: (1).读取计算机的名称: 在名称空间System.Net中定义了一个类Dns,在此类中定义了一个比较重要的方法 GetH ostName ( ),此方法的返回值就是本地计算机名称。在程序设计中首先要导入 System. Net名称空间,然后通过调用Dns类中的GetHostName ( )方法读取本地计算机名称 ,具体 实现的主要语句如下: label1.Text = "主机名称:" + System.Net.Dns.GetHostName ( ) ; (2).读取计算机的拨号上网临时的IP地址和局域网分配的固定IP地址: 在程序设计中,我们是通过一个自定义的函数--getIPAddress ( )来读取IP地址的 。首 先看一下如何读取本地固定的IP地址的。在Dns类中还定义了一个方法 GetHostByName ( )。此方法的返回值时IPHostEntry 对象,此对象有一个属性是AddressList,此 属性是 一个IPAddress类型的数组,包含了计算机此时的所有的IP地址信息。这当中也就 包含了 拨号上网得到的临时分配的IP地址和局域网固定的IP地址。具体实现语句如下: private static string getIPAddress ( ) { System.Net.IPAddress addr; // 获得本机局泳陀涤辛硕鯥P地址,一个时自己设定的局域网用的IP地址,另外 一个 就是拨号上网动态分配的IP地址了。本文就是来探索一下如何读取此二个IP地址和 计算 机名称。 二.程序设计和运行的环境: (1)微软公司视窗2000服务器版 (2).Net FrameWrok SDK Beta 2版 三.程序设计的主要思路及实现方法: (1).读取计算机的名称: 在名称空间System.Net中定义了一个类Dns,在此类中定义了一个比较重要的方法 GetH ostName ( ),此方法的返回值就是本地计算机名称。在程序设计中首先要导入 System. Net名称空间,然后通过调用Dns类中的GetHostName ( )方法读取本地计算机名称 ,具体 实现的主要语句如下: label1.Text = "主机名称:" + System.Net.Dns.GetHostName ( ) ; (2).读取计算机的拨号上网临时的IP地址和局域网分配的固定IP地址: 在程序设计中,我们是通过一个自定义的函数--getIPAddress ( )来读取IP地址的 。首 先看一下如何读取本地固定的IP地址的。在Dns类中还定义了一个方法 GetHostByName ( )。此方法的返回值时IPHostEntry 对象,此对象有一个属性是AddressList,此 属性是 一个IPAddress类型的数组,包含了计算机此时的所有的IP地址信息。这当中也就 包含了 拨号上网得到的临时分配的IP地址和局域网固定的IP地址。具体实现语句如下: private static string getIPAddress ( ) { System.Net.IPAddress addr; // 获得本机局域网IP地址 addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [0].Address ) ; return addr.ToString ( ) ; } 四.读取计算机名称本机固定IP地址源程序 IP01.cs源程序: //导入程序用到的名称空间 using System ; using System.Net; using System.Windows.Forms ; using System.Drawing ; public class Form3 : Form { //定义二个标签 private Label label1 ; private Label label2 ; public static void Main ( ) { Application.Run ( new Form3 ( ) ) ; } // 构造窗体 public Form3 ( ) { // 建立标签并且初始化 this.label1 = new System.Windows.Forms.Label ( ) ; this.label2 = new System.Windows.Forms.Label ( ) ; //先继承一个Label 类 label1.Location = new System.Drawing.Point ( 24 , 16 ) ; label2.Location = new System.Drawing.Point ( 44 , 36 ) ; //设定 Label的显示位置 label1.Text = "主机名称:" + System.Net.Dns.GetHostName ( ) ; // 显示本机的计算机名称 label2.Text = "IP 地址:" + getIPAddress ( ) ; // 显示本机的局域网IP地址 label1.Size = new System.Drawing.Size ( 200 , 50 ) ; label2.Size = new System.Drawing.Size ( 200 , 80 ) ; //设定标签的大小 label1.TabIndex = 0 ; label2.TabIndex = 1 ; label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ; label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ; // 设定标签的对齐方式 this.Text = "获得主机名称和IP地址!" ; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent ; this.AutoScaleBaseSize = new System.Drawing.Size ( 8 , 16 ) ; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D ; // 设定窗体的边界类型 this.ForeColor = System.Drawing.SystemColors.Desktop ; this.Font = new System.Drawing.Font ( "宋体" , 10 , System.Drawing. FontStyle .Bold ) ; // 设定字体、大小就字体的式样 this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide ; this.ClientSize = new System.Drawing.Size ( 250 , 250 ) ; //把标签加到窗体中 this.Controls.Add ( this.label1 ) ; this.Controls.Add ( this.label2 ) ; } private static string getIPAddress ( ) { System.Net.IPAddress addr; // 获得本机局域网IP地址 addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [0].Address ) ; return addr.ToString ( ) ; } } 在经过以下编译命令编译后, csc /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll /t: winex eip01.cs 得到ip01.exe文件,此文件就可以读取本地固定的IP地址。以下是执行后的界面: 图01:读取计算机名称和固定IP地址 五.读取计算机名称和拨号上网动态分配的IP地址源程序 在前面已经说了,GetHostByName ( )方法的返回值时 this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide ; 在ip01.cs中AddressList [0].Address是固定的IP地址,而对于上网动态分配的 IP地址 是.AddressList [1].Address。据此我们可以的得到读取拨号上网动态分配的IP地 址的 源程序: IP02.cs源程序: //导入程序用到的名称空间 using System ; using System.Net; using System.Windows.Forms ; using System.Drawing ; public class Form3 : Form { //定义二个标签 private Label label1 ; private Label label2 ; public static void Main ( ) { Application.Run ( new Form3 ( ) ) ; } // 构造窗体 public Form3 ( ) { // 建立标签并且初始化 this.label1 = new System.Windows.Forms.Label ( ) ; this.label2 = new System.Windows.Forms.Label ( ) ; //先继承一个Label 类 label1.Location = new System.Drawing.Point ( 24 , 16 ) ; label2.Location = new System.Drawing.Point ( 44 , 36 ) ; //设定 Label的显示位置 label1.Text = "主机名称:" + System.Net.Dns.GetHostName ( ) ; // 显示本机的计算机名称 label2.Text = "IP 地址:" + getIPAddress ( ) ; // 显示本机的拨号动态分配IP地址 label1.Size = new System.Drawing.Size ( 200 , 50 ) ; label2.Size = new System.Drawing.Size ( 200 , 80 ) ; //设定标签的大小 label1.TabIndex = 0 ; label2.TabIndex = 1 ; label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ; label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ; // 设定标签的对齐方式 this.Text = "? public Form3 ( ) { // 建立标签并且初始化 // 设定窗体的边界类型 this.ForeColor = System.Drawing.SystemColors.Desktop ; this.Font = new System.Drawing.Font ( "宋体" , 10 , System.Drawing. FontStyle .Bold ) ; // 设定字体、大小就字体的式样 this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide ; this.ClientSize = new System.Drawing.Size ( 250 , 250 ) ; //把标签加到窗体中 this.Controls.Add ( this.label1 ) ; this.Controls.Add ( this.label2 ) ; } private static string getIPAddress ( ) { System.Net.IPAddress addr; // 获得拨号动态分配IP地址 addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [1].Address ) ; return addr.ToString ( ) ; } } 编译完成后,执行可得到如下运行界面: 图02:读取计算机名称和动态IP地址 // 设定窗体的边界类型 this.ForeColor = System.Drawing.SystemColors.Desktop ; this.Font = new System.Drawing.Font ( "宋体" , 10 , System.Drawing. FontStyle .Bold ) ; // 设定字体、大小就字体的式样 this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide ; this.ClientSize = new System.Drawing.Size ( 250 , 250 ) ; //把标签加到窗体中 this.Controls.Add ( this.label1 ) ; this.Controls.Add ( this.label2 ) ; } private static string getIPAddress ( ) { System.Net.IPAddress addr; // 获得拨号动态分配IP地址 addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [1].Address ) ; return addr.ToString ( ) ; } } 编译完成后,执行可得到如下运行界面: 图02:读取计算机名称和动态IP地址 六.总结: 本文是通过二个例子来读出机器的计算机名称和不同的IP地址,通过以上二个例子 ,我 们可以看到如果机器有三个或者更多的IP地址,我们也可以通过设定AddressList 的不同 值来得到机器不同的IP地址。 在名称空间System.Net中还提供了很多面向网络编程的的类,这些类的功能是十分 巨大 的,灵活运用这些类,可以开发出很多功能强大的网络应用程序。 -- 如果我曾伤了你,就让我说声对不起 虽然想要再见你,也只能在梦里 想起你离去时的背影,你似乎也在哭泣 究竟有什么原因,非要我们分隔两地 在我的心里只有一句我爱你 就算全世界都没有人愿意听 ※ 来源:·飘渺水云间 Freecity.dhs.org·[FROM: xixixi] -- ※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.13] 上一篇 返回上一页 回到目录 回到页首 下一篇
|