您的位置:首页 > 编程语言 > C语言/C++

c语言获取MAC地址

2014-09-01 21:17 288 查看
#include <winsock2.h>

#include <Iphlpapi.h>

#include <stdio.h>

#pragma comment(lib, "Iphlpapi.lib")

void byte2Hex(unsigned char bData,unsigned char hex[])

{

    int high=bData/16,low =bData %16;

    hex[0] = (high <10)?('0'+high):('A'+high-10);

    hex[1] = (low <10)?('0'+low):('A'+low-10);

}

int getLocalMac(unsigned char *mac) //获取本机MAC地址 

{

    ULONG ulSize=0;

    PIP_ADAPTER_INFO pInfo=NULL;

    int temp=0;

    temp = GetAdaptersInfo(pInfo,&ulSize);//第一次调用,获取缓冲区大小

    pInfo=(PIP_ADAPTER_INFO)malloc(ulSize);

    temp = GetAdaptersInfo(pInfo,&ulSize);

    int iCount=0;

    while(pInfo)//遍历每一张网卡

    {

        //  pInfo->Address 是MAC地址

        for(int i=0;i<(int)pInfo->AddressLength;i++)

        {

            byte2Hex(pInfo->Address[i],&mac[iCount]);

            iCount+=2;

            if(i<(int)pInfo->AddressLength-1)

            {

                mac[iCount++] = ':';

            }else

            {

                mac[iCount++] = '#';

            }

        }

        pInfo = pInfo->Next;

    }

    if(iCount >0)

    {

        mac[--iCount]='\0';

        return iCount;

    }

    else return -1;

}

int main(int argc, char* argv[])

{

    unsigned char address[1024];

    if(getLocalMac(address)>0)

    {

        printf("MAC-%s\n",address);

    }else

    {

        printf("invoke getMAC error!\n");

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 网卡 mac c语言