PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

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

[复制链接]

2017-10-11 21:24:30 2655 0

admin 发表于 2017-10-11 21:24:30 |阅读模式

admin 楼主

2017-10-11 21:24:30

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
* i7 G3 W/ U- F6 p
! e1 ]0 F, b8 ^: |; i

  h  n( E/ X+ {6 c- m// 头文件包含
# h5 K0 h- N. P; t8 H9 h. O
#include "stdafx.h"
$ }3 x3 i$ @* Z. ~1 G#include
<WinSock2.h>
) P- g/ X3 P! |) u( G, a#include
<Iphlpapi.h>
% Q% C- n' v" _  c9 c8 n; f# Z#include
<iostream>
/ L; H9 ~8 J" z& k
using namespace std;% \( `( ?3 ]% \1 k6 h3 B& |+ j
// 函数声明
& `& y5 F1 g7 k* T) x6 g
void output(PIP_ADAPTER_INFO pIpAdapterInfo);
, P! d" k( Y5 e
// 程序入口# h1 |" k7 P" x# B$ O+ N' w7 W$ P
int _tmain(int argc, _TCHAR* argv[])& z! ]0 t3 Z5 ^1 t+ R" \, a% `) c
{# t5 d% q6 x5 {% J/ t. ^# b
   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
9 G7 }9 j. g4 S" G
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
7 ?  o. h( D7 A5 }  E' P# v8 y& s3 Q; g   
//得到结构体大小,用于GetAdaptersInfo参数
2 d' {! |3 S2 H$ C$ B9 X" b
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);  R" g  `( M& L8 S7 S9 T5 _
   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量. K& z! s! u$ C' _- l
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
& H4 w) A. I+ v: \. s& f   
if (ERROR_BUFFER_OVERFLOW==nRel)- r5 `0 Z  B7 [* v4 ?) P
    {
: g8 b# W* g! o) y         
//如果函数返回的是ERROR_BUFFER_OVERFLOW
: p& O0 T# I& }, w! b6 C    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小5 ]$ r, n) h. m
        
//这也是说明为什么stSize既是一个输入量也是一个输出量
. U/ r* B) }+ J        
//释放原来的内存空间
6 I+ C$ q4 z; K0 Q" n$ E. }
        delete pIpAdapterInfo;* i0 G& s6 d" d4 Q
        
//重新申请内存空间用来存储所有网卡信息  a: L. k7 l1 U
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];; W) N' p0 K3 s* _5 C9 J( Y' X" A
        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量' z3 W" |, ^+ v' r9 ]5 T: L( K4 h
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);    : |7 O7 O) W) j8 \/ a. V3 ]5 b
    }: S1 ]( t8 D# ~# x
   
if (ERROR_SUCCESS==nRel)
$ V# U+ N2 j! _( b$ t    {
9 S% W0 A, K5 C+ x        
//输出网卡信息) v. T  d2 u: S6 Z' k: k
        output(pIpAdapterInfo);) P, r5 x- Y: \5 e: i8 C# N
    }
" u/ k- u4 Q$ @- ]   
//释放内存空间2 ?# Z. s. D) Q% Q, b
    if (pIpAdapterInfo); s* C9 F/ m, c. ]0 R* B5 N
    {
5 J3 u5 j* b  p        delete pIpAdapterInfo;
, y" c2 `% j! [3 C    }6 L  s6 ~" O* }7 r
    getchar();) R9 C' V3 z# I  x
   
return 0;
- _4 v7 F# _* K# J& @8 q# T" M}
4 C% v4 [0 i( M! d; p8 ^3 S  T
///函数作用,输出网卡信息
" w9 X! P: G) _
void output(PIP_ADAPTER_INFO pIpAdapterInfo), P, O& h4 a7 q
{
8 _* D  A- V( L+ L   
//可能有多网卡,因此通过循环去判断
, x6 f& ^" T' J9 |& Q
    while (pIpAdapterInfo)8 x8 f, g; ?$ h
    {
7 e% d6 z/ q1 r6 Y        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;( m. w6 T! ?5 E- |* o
        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;% ~6 U' d/ n- W) a
        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;7 d$ b2 O# A. f7 |* V7 _7 |, \
        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)
8 S1 d3 w* z* `4 o        
if (i==pIpAdapterInfo->AddressLength-1)' y# k3 J5 i. o+ z. N, R1 b4 R
        {: O" F" \# X1 U' \' Y
            printf(
"%02x\n", pIpAdapterInfo->Address);
5 h8 `; ?7 W- X# A9 z        }( ^& r; K& x3 B$ P- s
        
else6 z3 e; Q2 {' r
        {- e7 X. L9 H, |9 n: ]
            printf(
"%02x-", pIpAdapterInfo->Address);$ t$ t- O4 A9 Q- v) S- `1 o
        }8 J2 \# t; z: j- h( s$ K1 a
        cout
<<"网卡IP地址如下:"<<endl;
4 o" q) r8 n8 Y  m3 c6 r" H        
//可能网卡有多IP,因此通过循环去判断
/ f& k) U- B1 h. m
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);- }' @4 X3 b& N" ]3 @
        
do ; H+ G$ Q; ?$ A* \" l4 [. r
        {
6 R$ a% m7 a/ Y, b" D            cout
<<pIpAddrString->IpAddress.String<<endl;
5 u# d5 H2 e4 N8 s            pIpAddrString
=pIpAddrString->Next;. ^! i$ Y1 s7 }, w$ R. E
        }
while (pIpAddrString);
/ @" f, d' k0 Z: C, X' O        pIpAdapterInfo
= pIpAdapterInfo->Next;
% {+ \: w- X# d- \) C! u1 T# u        cout
<<"*****************************************************"<<endl;" ?( n9 r* G" s" z- J
    }
! H8 T% J, r& T2 w* u8 Y1 ^   
return;$ i' t# o5 u! K" K, _. D1 b) N+ U  c
}
# n9 @# k2 M5 q& D1 }% i
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了