网络编程-获取计算机信息(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    

    }
        
/// <summary>
        
/// NetWorkCard Mac
        
/// </summary>
        
/// <returns></returns>
        private string GetNetWorkCard()
        {
            
string str = null;
            ManagementClass mc 
= new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc 
= mc.GetInstances();
            
foreach (ManagementObject mo in moc)
            {
                
if ((bool)mo["IPEnabled"== true)
                    str 
= mo["MacAddress"].ToString();
                mo.Dispose();
            } 
            
return str;
        }

其他:

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

 

 

 

posted @ 2008-12-19 14:15  bluealarm  阅读(803)  评论(0编辑  收藏  举报