精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>网络与通讯>>如何取得MAC地址>>获取网卡的 MAC 地址

主题:获取网卡的 MAC 地址
发信人: skyice()
整理人: wenbobo(2003-08-26 16:37:51), 站内信件
应 xgh 的要求,将获取网卡的 MAC 地址的代码贴出来

int GetMacCount(void)
// 获取网卡数
{
    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);

    uRetCode=Netbios(&ncb);
    if(uRetCode==0)
        return lana_enum.length;
    else
        return -1;
}

LPCSTR GetMacAddress(int lana_num)
// 获取 mac 地址
{
    typedef struct _ASTAT_
    {
        ADAPTER_STATUS adapt;
        NAME_BUFFER NameBuf[30];
     }ASTAT,* PASTAT;

    ASTAT Adapter;

    NCB ncb;
    UCHAR uRetCode;

    memset(&ncb,0,sizeof(ncb));
    ncb.ncb_command=NCBRESET;
    ncb.ncb_lana_num=lana_num;

    uRetCode=Netbios(&ncb);

    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);

    uRetCode=Netbios(&ncb);
    if(uRetCode==0)
    {
        char mac[15], * lpmac;

        sprintf(mac,"%02X%02X-%02X%02X-%02X%02X",
            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]);
        lpmac=mac;
        return lpmac;
    }
    else
        return NULL;
}

先获取系统中安装的网卡数,然后循环获取每块网卡的 mac 地址

--
欢迎您到C语言版来!
欢迎光临BBS系统版!

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.93.251]

[关闭][返回]