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

ip地址|visual

     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中还提供了很多面向网络编程的的类,这些类的功能是十分巨大的,灵活运用这些类,可以开发出很多功能强大的网络应用程序。

时间: 2024-09-11 08:25:50

用Visual C#获得计算机名称和IP地址的相关文章

Delphi获取本地计算机名称和IP地址

本程序介绍如何获取本地计算机的名称和IP地址. 向窗体上添加两个TLabel组件.两个TEdit组件和一个TButton组件,设计完成的主界面如图1所示. 图1 主界面 首先在程序的uses段中添加对WinSock的引用,然后添加一个GetHostName自定义函数,在其中调用GetComputerName函数获取计算机名称,响应代码如下: function TfrmMain.GetHostName:String; var ComputerName: array[0..MAX_COMPUTERN

[JAVA100例]042、获取计算机名称和IP地址

import java.net.*; /** * <p>Title: 获取本机名称和IP地址</p> * <p>Description: 使用InetAddress来获取本机名称和IP地址信息</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Filename: NetInfo.java</p> * @version 1.0 */ public class NetI

求vb2012修改计算机名称和IP地址的方法

问题描述 最近想做个小程序用于教学,但所学的知识太少,做不出来,谁帮帮我,谢谢!!! 解决方案 解决方案二:计算机名称好改,用DOS命令就行.IP是服务器或者路由器指定分配的,怎么改?我也想知道解决方案三:两个都可以调用vbs实现http://www.2cto.com/kf/201302/187413.htmlhttp://blog.sina.com.cn/s/blog_4c042e630100gx4v.html解决方案四:谢谢了,我试试!!!!!

python简单获取本机计算机名和IP地址的方法

  本文实例讲述了python简单获取本机计算机名和IP地址的方法.分享给大家供大家参考.具体实现方法如下: 方法一: ? 1 2 3 4 5 6 7 8 9 10 >>> import socket >>> hostname = socket.gethostname() >>> print hostname china-43226208c >>>ip = socket.gethostbyname(hostname) >>

vc获取计算机名和ip地址的方法_C 语言

本文实例讲述了vc获取计算机名和ip地址的方法.分享给大家供大家参考.具体实现方法如下: #include <winsock2.h> #include <stdio.h> #pragma comment(lib,"ws2_32.lib") void main() { WSADATA wsadata; WORD dwVersionRequested; int err; err=WSAStartup(dwVersionRequested,&wsadata);

SQL语句实现查询SQL Server服务器名称和IP地址

获取服务器名称: SELECT SERVERPROPERTY('MachineName') select @@SERVERNAME select HOST_NAME() 获取IP地址可以使用xp_cmdshell执行ipconfig命令: --开启xp_cmdshell exec sp_configure'show advanced options', 1 reconfigure with override exec sp_configure'xp_cmdshell', 1 reconfigur

java中通过网卡名称获取IP地址_java

复制代码 代码如下: package me.xuzs.sso.test; import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.util.Enumeration; public class InternetTest {     public static void main(String[] args) {        String net

[华为机试练习题]54.判断任意两台计算机的IP地址是否属于同一子网络

题目 描述: 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据. 最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯.就这么简单. 请看以下示例: 运算演示之一: IP地址:192.168.0.1 子网掩码:255.255.255.0 AND运算 转化为二进制进行运算: IP地址:11010000.10101000.00000000.00000001 子网掩码:1111111

如何快速获取局域网中电脑的IP地址

  局域网中有很多电脑,为了规范局域网中的所有电脑IP地址,需要查看各台电脑的IP地址.而在"网上邻居"中,只能查看到电脑的名称,如何快速获取局域网中电脑的IP地址呢? 获取局域网中很多电脑的IP地址,可以通过工具软件来获取.比如,可以使用NetSuper之类的软件.在使用软件时,首先要保证局域网中的所有电脑都处在开机状态,然后运行NetSuper软件,在主窗口中,单击"搜索计算机".这时就可以在主窗口左侧的计算机列表中看到计算的信息,包括计算机名.IP地址.计算机