人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

讀取網卡的MAC地址

讀取網卡的MAC地址

更新時間:2022-08-29 文章作者:未知 信息來源:網絡 閱讀次數:


廣東深圳 溫衛江  

---- 在 實 際 的 應 用 系 統 中, 我 們 往 往 會 需 要 在 程 序 運 行 時 獲 取 當 前 機 器 的 網 卡 的MAC 地 址, 以 便 作 為 某 種 標 識 之 用, 如 控 制 程 序 的 合 法 性 等。 下 文 介 紹 如 何 用Microsoft Visual C + + 6.0 開 發 這 樣 的 程 序。

----這 里 采 用 的 方 法 是 通 過Windows 9x/NT/Win2000 中 內 置 的NetApi32.DLL 的 功 能 來 實 現 的。 首 先 通 過 發 送 NCBENUM 命 令, 獲 取 網 卡 的 數 目 和 每 張 網 卡 的 內 部 編 號, 然 后 對 每 個 網 卡 標 號 發 送NCBASTAT 命 令 獲 取 其MAC 地 址。 注 意: 這 里 的 網 卡 是 指 捆 綁 了NetBEIU 協 議 的 通 信 協 議 棧, 可 以 在 網 卡 的 屬 性 處 查 看 到。

----請 運 行VC + +, 打 開 一 個 新 的 工 程, 選 擇 創 建 一 個Win32 Console 程 序, 然 后 按 下 文 輸 入 代 碼, 并 請 參 見 其 中 的 注 釋:

#include “stdafx.h"

#include
#include
#include
#include
#include

// 因 為 是 通 過NetAPI 來 獲 取 網 卡 信 息,
所 以 需 要 包 含 其 題 頭 文 件nb30.h
#include

typedef struct _ASTAT_
{
    ADAPTER_STATUS adapt;
    NAME_BUFFER    NameBuff [30];
}ASTAT, * PASTAT;

ASTAT Adapter;
// 定 義 一 個 存 放 返 回 網 卡 信 息 的 變 量

// 輸 入 參 數:lana_num 為 網 卡 編 號,
一 般 地, 從0 開 始, 但 在Windows 2000 中
并 不 一 定 是 連 續 分 配 的
void getmac_one (int lana_num)
{
    NCB ncb;
    UCHAR uRetCode;

    memset( &ncb, 0, sizeof(ncb) );
    ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = lana_num;    
// 指 定 網 卡 號

// 首 先 對 選 定 的 網 卡 發 送 一 個
NCBRESET 命 令, 以 便 進 行 初 始 化
    uRetCode = Netbios( &ncb );
printf( “The NCBRESET
return code is: 0x %x \n", uRetCode );

    memset( &ncb, 0, sizeof(ncb) );
    ncb.ncb_command = NCBASTAT;
    ncb.ncb_lana_num = lana_num;   // 指 定 網 卡 號

strcpy((char *)ncb.ncb_callname,“ *      " );   
ncb.ncb_buffer = (unsigned char *) &Adapter;      
// 指 定 返 回 的 信 息 存 放 的 變 量
    ncb.ncb_length = sizeof(Adapter);

// 接 著, 可 以 發 送NCBASTAT 命 令
以 獲 取 網 卡 的 信 息
    uRetCode = Netbios( &ncb );
printf( “The NCBASTAT return code is:
0x %x \n", uRetCode );
    if ( uRetCode == 0 )
    {
        // 把 網 卡MAC 地 址 格 式 化  成
常 用 的16 進 制 形 式, 如0010 -A4E4 -5802
printf( “The Ethernet Number[ %d] is:
%02X %02X - %02X %02X - %02X %02X\n",
            lana_num,
            Adapter.adapt.adapter_address[0],
            Adapter.adapt.adapter_address[1],
            Adapter.adapt.adapter_address[2],
            Adapter.adapt.adapter_address[3],
           Adapter.adapt.adapter_address[4],
           Adapter.adapt.adapter_address[5] );
    }
}

int main(int argc, char * argv[])
{
    NCB ncb;
    UCHAR uRetCode;
    LANA_ENUM lana_enum;

    memset( &ncb, 0, sizeof(ncb) );
    ncb.ncb_command = NCBENUM;

    ncb.ncb_buffer = (unsigned char *) &lana_enum;
    ncb.ncb_length = sizeof(lana_enum);

   // 向 網 卡 發 送NCBENUM 命 令,
   以 獲 取 當 前 機 器 的 網 卡 信 息,
   如 有 多 少 個 網 卡、 每 張 網 卡 的 編 號 等
    uRetCode = Netbios( &ncb );
printf( “The NCBENUM return code is:
     0x %x \n", uRetCode );
       if ( uRetCode == 0 )
       {
       printf( “Ethernet Count is : %d\n\n", lana_enum.length);

       // 對 每 一 張 網 卡, 以 其 網 卡 編 號 為
         輸 入 編 號, 獲 取 其MAC 地 址
       for ( int i=0; i

----此 時, 按F7 編 譯, 按F5 運 行 即 可。

----這 段 代 碼 可 以 直 接 嵌 入 相 關 的 應 用 系 統 之 中, 或 封 裝 成.DLL 或COM 控 件, 以 便 可 以 在Visual Basic、Visual Foxpro、Power Builder 或Delphi 等 其 他 程 序 中 調 用。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 兰考县| 明水县| 阿城市| 滁州市| 合阳县| 清镇市| 金堂县| 宝应县| 呼伦贝尔市| 隆回县| 肃北| 大渡口区| 广东省| 赣榆县| 南康市| 新竹市| 温州市| 汉源县| 左权县| 庐江县| 炎陵县| 泸溪县| 鄯善县| 黔江区| 安丘市| 庆云县| 白城市| 东丰县| 磐安县| 珠海市| 宁夏| 和林格尔县| 宁远县| 贡山| 青铜峡市| 潢川县| 天柱县| 六盘水市| 临安市| 阳山县| 嘉兴市|