分享
 
 
 

用Visual C#获得计算机名称和IP地址

王朝c#·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

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,在此类中定义了一个比较重要的方法 GetHostName ( ),此方法的返回值就是本地计算机名称。在程序设计中首先要导入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:winexeip01.cs

得到ip01.exe文件,此文件就可以读取本地固定的IP地址。以下是执行后的界面:

图01:读取计算机名称和固定IP地址

五.读取计算机名称和拨号上网动态分配的IP地址源程序

在前面已经说了,GetHostByName ( )方法的返回值时IPHostEntry 对象,此对象的属性 AddressList,是一个IPAddress类型的数组,包含了计算机此时的所有的IP地址信息。在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 = "获得主机名称和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 [1].Address ) ;

return addr.ToString ( ) ;

}

}

编译完成后,执行可得到如下运行界面:

图02:读取计算机名称和动态IP地址

六.总结:

本文是通过二个例子来读出机器的计算机名称和不同的IP地址,通过以上二个例子,我们可以看到如果机器有三个或者更多的IP地址,我们也可以通过设定AddressList

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有