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 2784 0

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

admin 楼主

2017-10-11 21:24:30

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

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

x

) ^3 t+ a- y: A# k, k% r6 w- x: s; n) O  j4 ~

9 K' v/ K) l7 _* s* y. r( r: l// 头文件包含5 m9 E+ o, {$ M# d7 {9 n! @/ Y
#include "stdafx.h"
  h' t$ C) @5 N2 K7 A9 u9 S9 F* H#include
<WinSock2.h>
& G3 J9 }8 `% k' V, d- u% i. D#include
<Iphlpapi.h>' _( m* h9 ?  ?" T3 o
#include
<iostream>
! h- ?# X, z! e  s, e
using namespace std;6 w" F8 N' @4 Y
// 函数声明% _  u* s) b$ A$ v4 t6 M7 _
void output(PIP_ADAPTER_INFO pIpAdapterInfo);/ v; J- h  P/ H/ U. C- m8 y9 r. v
// 程序入口$ I  G1 E* I  X
int _tmain(int argc, _TCHAR* argv[])4 c9 }$ f  R( C9 c; F- ]2 `
{' d% C4 R9 C% B3 @
   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息3 f& l" r/ j+ c! ?  ~5 ]. o
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();* M5 u; B$ X+ ~8 J: ?, s3 f' I& f
   
//得到结构体大小,用于GetAdaptersInfo参数
; u7 _- V6 c% y& _
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);
9 O; @1 `  _2 |! c7 c   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量" z* @  O7 ?% a6 M
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);! Q/ A! o7 H1 G% |
   
if (ERROR_BUFFER_OVERFLOW==nRel)& Y: G9 [! z' e  u2 z' v
    {: J* J4 I' p  i
         
//如果函数返回的是ERROR_BUFFER_OVERFLOW
7 y# y5 ^4 R8 I: [0 C& u    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
& g4 B+ T5 i( T$ J. b5 `! ?        
//这也是说明为什么stSize既是一个输入量也是一个输出量$ \0 o! b; |7 q) |1 H8 _- H
        
//释放原来的内存空间7 G+ g/ O6 ?! R9 Q
        delete pIpAdapterInfo;& j: O8 u3 }4 Y9 M! Q/ l
        
//重新申请内存空间用来存储所有网卡信息
# q/ U( h  C3 Y( v) S, I
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
# g4 q; ~/ Q2 P' L. n/ f        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量6 U  u. @( C4 a2 E/ `% B; r7 e
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);    5 X$ k- F2 s( K) a9 s
    }& ?- I/ P% ^" Z
   
if (ERROR_SUCCESS==nRel)
- J; e. h3 t8 x( f! u    {& t6 b- g/ M- P
        
//输出网卡信息0 q% _/ `" Y4 H7 y# ?: y9 a
        output(pIpAdapterInfo);( C; X- [: {; T& u% ?9 l. c
    }+ b7 S4 n1 D$ z0 \
   
//释放内存空间
" o2 a' [! S1 ^
    if (pIpAdapterInfo)- a% C+ c/ B# @
    {+ s, z1 W. d4 N, O  N6 M
        delete pIpAdapterInfo;
, S) _/ U7 w0 E9 V, S9 Y    }& I) z% l! r5 X. h% P& ]$ \" @" V
    getchar();! R6 o3 L$ Y) _; X/ f; V
   
return 0;. x- I9 \* ?! G: H! P" r. t
}4 U/ D9 {  D  s* _( K" u
///函数作用,输出网卡信息
5 B/ |$ F' Y( c( {
void output(PIP_ADAPTER_INFO pIpAdapterInfo). R) l" H) O' \- c# L" `; t
{
/ c9 _  P. K2 q" m   
//可能有多网卡,因此通过循环去判断- y8 |' g3 J( I3 p
    while (pIpAdapterInfo)
' F& U% o1 C1 V8 v  J+ I+ A1 h    {
) w; h, t# n" Z, i8 A        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;0 y' u- i; B9 j4 N. H
        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
0 M; N5 P( w  N$ G        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;
) g6 _% G- j/ _; G, H        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)$ _. w6 n( J1 e
        
if (i==pIpAdapterInfo->AddressLength-1)
4 w0 `  H& f! t% v) {6 P! H        {
: u7 i4 L+ ~) e& j" b* t            printf(
"%02x\n", pIpAdapterInfo->Address);
- e4 I" o% z8 s( g2 c        }7 B2 p! u7 d: h# j6 f7 D
        
else7 h# d1 j; e7 P' ]
        {( S0 x( g7 m7 {2 |' N7 A- c
            printf(
"%02x-", pIpAdapterInfo->Address);: |  _7 V6 o( z/ w$ g" v
        }
+ L7 U+ j7 g: D& q% s- j        cout
<<"网卡IP地址如下:"<<endl;
* p1 y( G4 a' v3 H        
//可能网卡有多IP,因此通过循环去判断; T9 f  Z; w. L0 o" w/ n
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
% i2 \* `' Y5 x9 m        
do
% u$ C' P5 o' ?. K- g        {
) i( v6 s6 ^6 C+ F            cout
<<pIpAddrString->IpAddress.String<<endl;
/ `; e5 q: r6 V            pIpAddrString
=pIpAddrString->Next;
7 w' ]3 `* ]* W& E- s* c        }
while (pIpAddrString);# b; V0 r- p1 [9 N
        pIpAdapterInfo
= pIpAdapterInfo->Next;' @/ G5 m+ l+ @3 |& N& j
        cout
<<"*****************************************************"<<endl;) c! }5 a  Q6 z! ^4 g
    }8 x2 t3 F+ D# i  `! n
   
return;/ V; }4 w' n/ T; _/ U2 v. }
}

' |& u+ C( W1 S3 d. K1 p
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了