獲取網絡卡MAC位址

2021-04-17 19:59:31 字數 1684 閱讀 7196

做網路程式設計的程式設計師免不了要與mac位址打交道,這個128bit的數字串在某種程度上就代表了機器的唯一性,因此在做統計工作時一般都以mac位址作為標準。 下面介紹兩種獲取本機mac位址的方式。1. 通過請求netbios服務獲取mac位址;2. 通過iphelpapi獲取。 第一種方法要求本機開啟了netbios服務,由於有部分機器已經禁用了這項服務,因此獲取時可能失敗, 個人比較推薦第二種方法。

1。通過請求netbios服務獲取mac位址。使用庫netapi32.lib

view plain

copy to clipboard

print

?

structastat    

;   

boolgetmacbynetbios(unsignedchar* mac)   

astat adapter;   

ncb ncb;   

memset( &ncb, 0,sizeof(ncb) );    

ncb.ncb_command = ncbreset;    

ncb.ncb_lana_num = 0;    

netbios( &ncb );    

memset( &ncb, 0,sizeof(ncb) );    

ncb.ncb_command = ncbastat;    

ncb.ncb_lana_num = 0;    

strcpy( (char*)ncb.ncb_callname, "* "

);    

ncb.ncb_buffer = (unsignedchar*) &adapter;    

ncb.ncb_length =sizeof(adapter);    

if(netbios(&ncb) == 0)   

else

}   

2。通過iphelpapi獲取,使用庫iphlpapi.lib

view plain

copy to clipboard

print

?

#include

boolgetmacbyiphelp(unsignedchar* mac)   

ulonguloutbuflen = 0;   

if(getadaptersinfo(null, &uloutbuflen) == error_buffer_overflow )   

else

}   

else

}   

以上兩個函式的使用方法如下:

view plain

copy to clipboard

print

?

voidmain (void)   

c 獲取網絡卡MAC位址

一台機器上可能有多個網絡卡,每乙個網絡卡只有乙個mac位址,但是每乙個網絡卡可能配置有多個ip位址 如平常的膝上型電腦中,就會有無線網絡卡和有線網絡卡 網線介面 兩種 因此,如果要獲得本機所有網絡卡的ip和mac位址資訊,則必須順序獲得每個網絡卡,再依次獲取其資訊等 在windows sdk中,用i...

獲取指定網絡卡的MAC位址

由於終端裝置多網絡卡使用的問題,以前使用netbios 獲取網絡卡mac位址的方法可能導致不可靠的問題。現推薦大家使用如下方法實現 cstring getlicense cstring strmac cstring getmacbyname cstring strname strcat szfile...

獲取遠端網絡卡MAC位址

出自 朋友mingal急問我有關獲取遠端網絡卡mac位址的asp.net實現。我一開始以為是獲取本機mac位址,說了幾種方法給他。由於他還需要獲取伺服器 本機 相關資訊,如硬碟序列號 cpu資訊等。於是介紹了個wmi方法給他 using system.management string strmac...