网络编程-获取计算机信息(DNS、WMI、Environment)
计算机名称和IP 地址对于运行TCP/IP 协议的网络主机来说,是两个最重要的标识。IP地址由4个十进制的数字号码所组成,而每一个号码的值介于0~255之间,它虽然解决了网络上计算机的识别问题,但是IP地址不容易记,因此域名系统(DNS)被开发出来,它专门用于将IP地址转换成有意义的文字,以方便识别记忆。
在.net中,提供了DNS、WMI、Envrioment等方法来获取本地或远程计算机的信息。
1、Envrioment类
此类提供有关当前环境和平台的信息以及操作它们的方法。
NetBIOS 是一种非常古老的网络协议,它是为了和IBM NetBIOS 兼容而引进的。NetBIOS 是建立在BIOS 基础之上,并对之进行了扩展,使之能够支持网络上的I/O 调用。
通过NetBIOS 来获取本地计算机名称要使用到System 命名空间中的Environment 类。通过NetBIOS 获取本地计算机名称使用的是Environment 类的MachineName 属性。Environment类还提供了一些的属性用以获取和计算机相关的其他重要信息。
2、DNS类
Dns类主要是从域名系统(DNS)中检索关于特定主机的信息,提供简单的域名解析功能。位于System.Net命名空间下。
3、WMI规范
WMI对应的命名空间提供对大量管理信息和管理事件集合的访问,这些信息和事件是与根据 Windows 管理规范 (WMI) 结构对系统、设备和应用程序设置检测点有关的。应用程序和服务可以可以查询感兴趣的管理信息(例如在磁盘上还剩多少可用空间、当前 CPU 利用率是多少、某一应用程序正连接到哪一数据库等等)。
msdn:http://msdn.microsoft.com/zh-cn/library/system.management.aspx
1、本地计算机和主机名
在C#提供的Dns类,可以轻松的取得主机名和IP地址.
示例:
string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP
string strAddr = ipEntry.AddressList[0].ToString(); //第一个网卡地址
MAC地址:使用ManagementClass。
2、远程计算机和主机名
获取远程主机的MAC地址时,需要借用API函数SendARP.该函数使用ARP协议,向目的主机发送ARP包,利用返回并存储在高速缓存中的IP和MAC地址对,从而获取远程主机的MAC地址.
参考:http://hi.baidu.com/ooofcu/blog/item/6b7fba99f4f40a0f6f068c3c.html
3、WMI的部分应用
如:
Code
其他:
http://msdn.microsoft.com/en-us/library/aa394084(VS.85).aspx
http://www.opent.cn/?action=show&id=323
http://school.cfan.com.cn/pro/c/2006-08-08/1154967075d11871.shtml
http://blog.csdn.net/ssm1226/archive/2005/01/19/259887.aspx