PLM之家 UG NX10.0二次开发(ufun和NXOpen C++)网络培训火热报名

PLM之家-上海点团信息科技有限公司工业4.0数字化软件官方知识管理平台

查看: 58|回复: 0

[转载电子书] C++的方式获取当前系统的MAC物理地址

[复制链接]
  • TA的每日心情

    昨天 09:03
  • 签到天数: 54 天

    [LV.5]常住居民I

    1696

    主题

    3268

    帖子

    5万

    积分

    管理员

    PLM之家mildcat

    Rank: 9Rank: 9Rank: 9

    积分
    54672
    发表于 2017-10-11 21:24:30 | 显示全部楼层 |阅读模式



    // 头文件包含
    #include "stdafx.h"
    #include
    <WinSock2.h>
    #include
    <Iphlpapi.h>
    #include
    <iostream>
    using namespace std;
    // 函数声明
    void output(PIP_ADAPTER_INFO pIpAdapterInfo);
    // 程序入口
    int _tmain(int argc, _TCHAR* argv[])
    {
       
    //PIP_ADAPTER_INFO结构体指针存储本机网卡信息
        PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
       
    //得到结构体大小,用于GetAdaptersInfo参数
        unsigned long stSize = sizeof(IP_ADAPTER_INFO);
       
    //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
        int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
       
    if (ERROR_BUFFER_OVERFLOW==nRel)
        {
             
    //如果函数返回的是ERROR_BUFFER_OVERFLOW
        //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
            
    //这也是说明为什么stSize既是一个输入量也是一个输出量
            
    //释放原来的内存空间
            delete pIpAdapterInfo;
            
    //重新申请内存空间用来存储所有网卡信息
            pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
            
    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
            nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);   
        }
       
    if (ERROR_SUCCESS==nRel)
        {
            
    //输出网卡信息
            output(pIpAdapterInfo);
        }
       
    //释放内存空间
        if (pIpAdapterInfo)
        {
            delete pIpAdapterInfo;
        }
        getchar();
       
    return 0;
    }
    ///函数作用,输出网卡信息
    void output(PIP_ADAPTER_INFO pIpAdapterInfo)
    {
       
    //可能有多网卡,因此通过循环去判断
        while (pIpAdapterInfo)
        {
            cout
    <<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
            cout
    <<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
            cout
    <<"网卡MAC地址:"<<pIpAdapterInfo->Address;
            
    for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)
            
    if (i==pIpAdapterInfo->AddressLength-1)
            {
                printf(
    "%02x\n", pIpAdapterInfo->Address);
            }
            
    else
            {
                printf(
    "%02x-", pIpAdapterInfo->Address);
            }
            cout
    <<"网卡IP地址如下:"<<endl;
            
    //可能网卡有多IP,因此通过循环去判断
            IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
            
    do
            {
                cout
    <<pIpAddrString->IpAddress.String<<endl;
                pIpAddrString
    =pIpAddrString->Next;
            }
    while (pIpAddrString);
            pIpAdapterInfo
    = pIpAdapterInfo->Next;
            cout
    <<"*****************************************************"<<endl;
        }
       
    return;
    }

    PLM之家,专业的NX,Teamcenter学习视频网。PLM之家科技,承接二次开发,视频定制,实施培训等业务。www.plmhome.com; && www.plmhome.net-->-->点团信息科技-->-->欢迎联系我们--QQ 939801026
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | QQ关联注册

    本版积分规则

    关闭

    站长推荐 上一条 /1 下一条

    <

    QQ|小黑屋|手机版|Archiver|PLM之家-工业4.0数字化驱动之家 ( 沪ICP备13003373-3

    GMT+8, 2017-10-20 04:20 , Processed in 0.129213 second(s), 33 queries .

    Powered by PLM之家科技! X3.2

    © 2001-2013 PLMHome Inc.

    快速回复 返回顶部 返回列表