C 獲取IP及MAC位址

2021-05-11 13:48:47 字數 2095 閱讀 9195

利用dns類和wmi規範獲取ip及mac位址

在c#程式設計中,要獲取主機名和主機ip位址,是比較容易的.它提供的dns類,可以輕鬆的取得主機名和ip位址.

示例:string strhostname = dns.gethostname(); //得到本機的主機名

iphostentry ipentry = dns.gethostbyname(strhostname); //取得本機ip

string straddr = 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類為管理物件的集合,下例中由檢索物件返回管理物件集合賦值給它.

示例:managementobjectsearcher query =new managementobjectsearcher("select * from win32_networkadapterconfiguration") ;

managementobjectcollection querycollection = query.get();

foreach( managementobject mo in querycollection )

獲取遠端主機的mac位址時,需要借用api函式sendarp.該函式使用arp協議,向目的主機傳送arp包,利用返回並儲存在快取記憶體中的ip和mac位址對,從而獲取遠端主機的mac位址.

示例:int32 ldest= inet_addr(remoteip); //目的ip

int32 lhost= inet_addr(localip); //本地ip

try

catch(exception err)

",err.message);

} return 0.tostring();

但使用該方式獲取mac時有乙個很大的限制,就是只能獲取同網段的遠端主機mac位址.因為在標準網路協議下,arp包是不能跨網段傳輸的,故想通過arp協議是無法查詢跨網段裝置mac位址的。

示例程式:

using system.net;

using system;

using system.management;

using system.runtime.interopservices;

public class getip

//獲取本機的mac

public string getlocalmac()

return(mac);

}//獲取遠端主機ip

public string getremoteip(string remotehostname)

return(straddr);

}//獲取遠端主機mac

public string getremotemac(string localip, string remoteip)

catch(exception err)

",err.message);

} return 0.tostring();

} public static void main(string args)

console.writeline(gi.getremotemac("192.168.0.3","192.168.0.1"));}}

C 獲取IP及MAC位址

public class hostinfo 1 d d 2 0 4 d 25 0 5 d 1 d d 2 0 4 d 25 0 5 d 1 d d 2 0 4 d 25 0 5 d 1 d d 2 0 4 d 25 0 5 獲取本機主機名 public static string gethostna...

獲取本地IP與網路Ip及Mac位址

由於專案上的原因,需要獲取本地ip與網路ip及mac位址,弄了好半天,才明白過程,於是給大家分享一下。不說了,直接上 public class getipandmacaddress 獲取鏈結網路時分配的ip throws socketexception public static string ge...

c 獲取本地IP和MAC位址

查詢了幾個方法,經過除錯修改,下面這個方法能很好的獲取到本地的ip和mac位址。可以用於這方面的功能實現。主要是要新增system.management的引用。csharp view plain copy print?using system using system.management usin...