地址
利用 dns 类和 WMI 规范获取 IP 及 MAC 地址
在 C#编程中,要获取主机名和主机 IP 地址,是比较容易的.它提供的 Dns 类,可以轻松的取得主机名和 IP 地
址.
示例:
[c-sharp] view plain copy
1. stringstrHostName=Dns.GetHostName();//得到本机的主机名
2. IPHostEntryipEntry=Dns.GetHostByName(strHostName);//取得本机 IP
3. stringstrAddr=ipEntry.AddressList[0].ToString();//假设本地主机为单网卡
在这段代码中使用了两个类,一个是 Dns 类,另一个为 IPHostEntry 类,二者都存在于命名空间
System.Net 中.
Dns 类主要是从域名系统(DNS)中检索关于特定主机的信息,上面的代码第一行就从本地的 DNS 中检索出
本地主机名.
IPHostEntry 类则将一个域名系统或主机名与一组 IP 地址相关联,它与 DNS 类一起使用,用于获取主机的
IP 地址组.
要获取远程主机的 IP 地址,其方法也是大同小异.
在获取了 IP 地址后,如果还需要取得网卡的 MAC 地址,就需要进一步探究了.
这里又分两种情况,一是本机 MAC 地址,二是远程主机 MAC 地址.二者的获取是完全不同的.
在获取本机的 MAC 地址时,可以使用 WMI 规范,通过 SELECT 语句提取 MAC 地址.在.NET 框架中,WMI 规
范的实现定义在 System.Management 命名空间中.
ManagementObjectSearcher 类用于根据指定的查询检索管理对象的集合
ManagementObjectCollection 类为管理对象的集合,下例中由检索对象返回管理对象集合赋值给它.
示例:
[c-sharp] view plain copy
1. ManagementObjectSearcherquery=newManagementObjectSearcher("SELECT*F
ROMWin32_NetworkAdapterCon>guration");
2. ManagementObjectCollectionqueryCollection=query.Get();
3. foreach(ManagementObjectmoinqueryCollection)
4. {
5. if(mo["IPEnabled"].ToString()=="True")
6. mac=mo["MacAddress"].ToString();
7. }