













一.概述:
我们知道对于一台计算机来说,他只有一个计算机名称,但是他可以有多个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 ( ) ;
}
}

/导入程序用到的名称空间
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 ( ) ;
}
}

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。