今天是:
首 页信息查询网站SEO查询工具CSS编辑器建站素材
网海拾贝,电脑资讯,电脑快报,it资讯,网站建设资讯,教程基地
软件新闻
操作系统
Vista Winxp Win2003 Linux Windows综合
工具软件
系统工具 媒体工具 网络工具 杀毒软件 聊天
软件开发
C教程 C++ Java C# ASP.NET JSP PHP
数据库
Oracle MySQL DB2 SQL Server Sybase
安全
网络 病毒
办公应用
Word Excel Powerpoint Outlook 其他
平面设计
Photoshop Fireworks Coreldraw Flash Illustrator 3dsmax
网站运营
网站运营 网站优化 网站策划 策划书下载 建站心得 站长故事 网站盈利 网页制作 网页特效 建站素材 免费资源 QQ频道
  当前位置:首 页 >> 软件开发 >> C#教程 >> 用Visual C#获得计算机名称和IP地址

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

  发布于2005-07-07 22:10 来源:网海拾贝

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的不同值来得到机器不同的IP地址。
在名称空间System.Net中还提供了很多面向网络编程的的类,这些类的功能是十分巨大的,灵活运用这些类,可以开发出很多功能强大的网络应用程序。


中查找“用Visual C#获得计算机名称和IP地址”更多相关内容

中查找“用Visual C#获得计算机名称和IP地址”更多相关内容



上一篇:用Visual C#来删除注册表中的注册信息
下一篇:用Visual C#中轻松浏览数据库记录
最近更新 赞助商
·C#4.0:新功能和展望11-04
·C#中的数字格式化 格式日期格式化03-28
·数据结构(C#)排序算法 (冒泡排序)03-11
·.NET 2.0(C#)调用ffmpeg处理视频的方法02-21
·C#如何取硬件标志01-24
·如何用C#写一个简单的Login窗口01-24
·如何把多个文件写入到一个文件中去并能分解01-24
·“插花问题”的动态规划法算法01-24
·编程实例 字母+数字验证码程序12-28
·C#实现窗口最小化到系统托盘12-20
·C#实现USB接口的程序代码12-19

共有评论 0 条 网友评分 0分 查看所有评论


发表评论→ 学而不思则罔,思而不学则殆,请大胆发表你的见解。

输验证码:

您对此篇文章的评分:1分 2分 3分 4分 5分

  • 站内搜索
关键词

搜索方式

搜索范围

精确匹配
Baidu
网站首页 - 关于本站 - 网站地图 - 广告合作 - 站点声明 - RSS订阅 - 联系我们
Copyright © 2005 网海拾贝.[新ICP备05003216号]. All Rights Reserved .