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

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

admin 楼主

2017-10-11 21:24:30

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

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

x

+ o* h) U8 L) s4 K& b" P0 c7 Z( h! k* [3 _

- L" `0 o5 m' v5 @1 b* v2 \5 f// 头文件包含2 D5 H5 s1 d$ p) ]/ V4 B
#include "stdafx.h"
3 k4 |' f, d7 I# L2 d#include
<WinSock2.h>' _- f) e8 v$ K9 O) Z6 F9 ?
#include
<Iphlpapi.h>
) l. X( R  ]* z; O#include
<iostream>% a: R' d2 \+ L& }8 [9 y/ B' S( x
using namespace std;# C* _% [9 |4 P1 s- X
// 函数声明
) u% t* H( v6 ?+ M) y: e+ a7 Z3 I
void output(PIP_ADAPTER_INFO pIpAdapterInfo);
; P# `0 m  P* `' \8 Z! p
// 程序入口
9 _' W' H6 E) ^5 r8 X- D
int _tmain(int argc, _TCHAR* argv[])" D/ C4 Y% `8 ^1 Y/ p  `" J
{* {. f) ]( R3 y/ G) B% u6 w
   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息5 n  y! u& g& o3 s4 \" c9 `1 ?
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
( \- h! p+ K2 M% T   
//得到结构体大小,用于GetAdaptersInfo参数
7 B3 D2 g( N+ Y# s
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);
+ f  B7 g. ~7 u4 [* q   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
4 d% m6 q  Y( \" c
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);" }& Y; [. a1 T! W3 U
   
if (ERROR_BUFFER_OVERFLOW==nRel)
, j. M2 e7 r0 v( B. h. ^    {: r8 b! j: m! Q( ?
         
//如果函数返回的是ERROR_BUFFER_OVERFLOW) Q! r1 G7 t) \4 ~
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小5 t# }/ [. {4 J6 d9 H6 s( M0 a
        
//这也是说明为什么stSize既是一个输入量也是一个输出量
: A/ u7 r& E9 ^6 T& v4 Q        
//释放原来的内存空间
. u# F1 R3 r% f% h. l9 t
        delete pIpAdapterInfo;) n# V# o7 z) N$ N1 j( T1 W- d
        
//重新申请内存空间用来存储所有网卡信息! L- |6 G( h) P5 {( q: f- W5 W
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
3 O! q9 j) P, c/ t! r        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量. s0 w! L: O# }6 N. d
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);   
3 P  j% T$ i  Q$ R) d    }
, L% C, _3 h/ d- @  X! Z   
if (ERROR_SUCCESS==nRel)- x: h2 d2 \2 F: H/ W
    {; ]' Q  ^5 X7 O$ I$ Q( E2 J$ S
        
//输出网卡信息" c0 j7 \- l/ P/ B% l4 e" a
        output(pIpAdapterInfo);6 u( f* t2 c4 }! B. E1 b
    }
+ _- j: @  C6 x! W1 n   
//释放内存空间
6 O$ I$ m' [1 y% o: e: L* T4 I
    if (pIpAdapterInfo)
7 z8 P, [4 C' L    {
" i* Q1 D9 D3 H) l7 T: v5 @4 A        delete pIpAdapterInfo;
& O2 ?# [  ?0 |. [3 Q" Q% Z) t    }6 ^2 V3 N8 g% j: E! b0 Q
    getchar();
5 K2 G8 Q& s7 l   
return 0;: U7 N) M. E  v- j4 y/ `: P4 N
}
% N) Q1 p2 C- v
///函数作用,输出网卡信息
2 [! I  D2 H( G5 n* {- [
void output(PIP_ADAPTER_INFO pIpAdapterInfo)
" Z7 H/ `5 G8 e" E  O! i8 j{
/ l# a. ~9 d8 Z. h" }: D6 k0 r   
//可能有多网卡,因此通过循环去判断# u/ e4 [  F% s& t9 ~8 V9 Z
    while (pIpAdapterInfo)
5 i$ ^) e# S; b8 `0 W    {0 p3 {! k2 T* }( D' @
        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;7 P. k6 ?$ V" Z
        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;, q! U7 V; A" B
        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;
8 W7 [1 @) y+ T        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)
: u( V* H9 g- n4 @7 _6 q. B        
if (i==pIpAdapterInfo->AddressLength-1)1 [0 `) ~9 Q3 Z3 e! Q  {) y/ P; F
        {
; a8 R! r8 M2 i4 K+ e! ^            printf(
"%02x\n", pIpAdapterInfo->Address);; |) G, `5 |- t8 R$ ^' T$ H4 J& R) q
        }
) M0 `; n( ^- A* A1 T7 I, ?: g        
else" |" T* _* B) h7 b/ Z  R
        {4 l2 w0 z* W+ F0 M  a: ~
            printf(
"%02x-", pIpAdapterInfo->Address);* Q! g, T' Q9 E7 K) }# R
        }( q2 V- @, h) Q! U9 o6 g9 I( X
        cout
<<"网卡IP地址如下:"<<endl;6 R. ]$ F# r& [) Q& {& c
        
//可能网卡有多IP,因此通过循环去判断2 z7 F! b- _, L/ j! ]8 B/ @
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);, ]0 N( R7 H# C& ~9 D4 t5 }* @
        
do
1 c' H" G( r2 e$ r2 }        {8 H0 Y' ^/ W+ a2 q5 a
            cout
<<pIpAddrString->IpAddress.String<<endl;
$ w; c, c) R0 U) n            pIpAddrString
=pIpAddrString->Next;( V% _1 P! Y# b2 }
        }
while (pIpAddrString);
; ^+ g1 H2 K2 V( R; K        pIpAdapterInfo
= pIpAdapterInfo->Next;; z0 |1 w3 d( l) e
        cout
<<"*****************************************************"<<endl;
5 t0 r) }% w' z    }  h# c! d3 g5 m9 e, b
   
return;7 V2 R5 h) e. T% }- L  g. \
}

, c' D# g) _& j% ?% f9 J' g+ N% R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了