做網路程式設計的程式設計師免不了要與mac位址打交道,這個128bit的數字串在某種程度上就代表了機器的唯一性,因此在做統計工作時一般都以mac位址作為標準。 下面介紹兩種獲取本機mac位址的方式。1. 通過請求netbios服務獲取mac位址;2. 通過iphelpapi獲取。 第一種方法要求本機開啟了netbios服務,由於有部分機器已經禁用了這項服務,因此獲取時可能失敗, 個人比較推薦第二種方法。
1。通過請求netbios服務獲取mac位址。使用庫netapi32.lib
view plain
copy to clipboard
?
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
?
#include
boolgetmacbyiphelp(unsignedchar* mac)
ulonguloutbuflen = 0;
if(getadaptersinfo(null, &uloutbuflen) == error_buffer_overflow )
else
}
else
}
以上兩個函式的使用方法如下:
view plain
copy to clipboard
?
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...