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

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

admin 楼主

2017-10-11 21:24:30

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

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

x

4 |  x# r4 W9 K
, R& d: a" x- z8 t' N
% K7 U5 A1 a/ o' X4 p// 头文件包含) d& P* O$ q, V) N
#include "stdafx.h"/ G; \, G7 @/ h* G+ J/ x+ K
#include
<WinSock2.h>
% z. _. z" `, X#include
<Iphlpapi.h>
! L/ ]( F, r, B9 w/ a+ u#include
<iostream>; p1 r6 U" d" ^8 b  ~
using namespace std;
  K- r+ W2 t1 \3 n( V" ^; M/ d
// 函数声明
: C" q5 O6 E- L0 g$ a( l
void output(PIP_ADAPTER_INFO pIpAdapterInfo);, H) l% G8 P* w7 o' s! u
// 程序入口
8 x0 s: l6 I( u2 t2 q
int _tmain(int argc, _TCHAR* argv[])
& c' t. {$ A* N& E4 ^{! `  L! M5 _: @0 C; N# l8 u0 v: Q
   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
7 F, x; ]5 f1 c7 n+ E# G5 y) e5 k
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
3 A8 `) M4 F* \, H   
//得到结构体大小,用于GetAdaptersInfo参数
# C) G& p3 ?1 E$ [" v
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);2 f/ X5 M# Q3 {+ l. I! h+ D
   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量( [; M$ E( l* F, U2 a
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);- a1 E6 }" c) V: e  M) K$ S# U
   
if (ERROR_BUFFER_OVERFLOW==nRel)! H2 X! o+ Z4 V1 Q0 n; m
    {' m4 _5 ]8 c% c5 s
         
//如果函数返回的是ERROR_BUFFER_OVERFLOW3 T. v8 i% P5 N) N8 D
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
' U0 Z( h: B* D* k1 s8 k3 R  n        
//这也是说明为什么stSize既是一个输入量也是一个输出量
# _/ `: ^' _' I. ]- V- d        
//释放原来的内存空间/ s  K2 z$ z  s8 ]* H0 r- H! ]% W" k
        delete pIpAdapterInfo;. q1 _6 J9 [' _0 i3 E  ]
        
//重新申请内存空间用来存储所有网卡信息
/ ~6 w. E; e8 @$ F3 `
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
; S; t4 O9 ^) Y7 X* ?        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
* Q- R4 e0 J$ n0 N' _
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);    & a  {9 S6 v9 [' a, o
    }" p+ F3 d, Q# K2 N+ o! L7 g
   
if (ERROR_SUCCESS==nRel)
# i9 e, F# q' k0 A& k" C    {
+ |4 s: c1 F( e% X1 y( n- N        
//输出网卡信息" K, ~6 ]) B% q' {
        output(pIpAdapterInfo);
6 E( t; n0 ^5 @( Y0 s0 t    }
$ C- O- w/ s' `$ H. w   
//释放内存空间2 e& L1 c: J6 b7 J5 G
    if (pIpAdapterInfo)
) F9 R, d* Q9 ?    {6 E5 a6 i# X; Y" z3 N
        delete pIpAdapterInfo;
# o1 K' {8 C) ~  b+ f- ?    }
1 ^# r' R) j" [# ^0 Y    getchar();
1 P: w& I4 m$ ^5 X/ @& W, v   
return 0;
& j; ?" K  d* C) f' ^* Y3 {# v}( |' n" L: g% |+ B9 ]; W. ^
///函数作用,输出网卡信息, r. w* F8 T6 a5 D0 p+ R
void output(PIP_ADAPTER_INFO pIpAdapterInfo)
8 q/ p' K6 ^; @; Q2 [) X{
! K* `! `/ |! B0 D. _& ?; J$ B   
//可能有多网卡,因此通过循环去判断
/ u5 k$ S; K, A: J7 L+ p
    while (pIpAdapterInfo)4 G) a0 l9 O; A4 H
    {
0 f: ]. t3 ]- d" j% f) b        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
/ y4 [" V& c$ d- ^        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;  a. ]2 s6 s3 f( Z
        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;
/ K. S2 U* \& ?5 \. N. G        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)% P6 u- p% p6 T; I1 J* a
        
if (i==pIpAdapterInfo->AddressLength-1)
, n8 Z6 r, Z7 B/ |8 ?        {
- J* [1 V5 z6 `            printf(
"%02x\n", pIpAdapterInfo->Address);- H7 }7 y2 {! D5 a7 m2 D' j& u6 x
        }
9 |8 H% X4 |: a$ k& j3 s        
else$ E8 u6 c* R1 d& U7 d
        {- ~9 P2 T6 Y! e( L3 u" r
            printf(
"%02x-", pIpAdapterInfo->Address);9 L5 z( U  z% ~5 P( u2 q5 Z, r5 V
        }) b. I6 ?6 ~/ P) l7 n
        cout
<<"网卡IP地址如下:"<<endl;; t- K) C/ c: g3 ?
        
//可能网卡有多IP,因此通过循环去判断$ v% \/ I" z( ?% F
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
  b' x( ^) z  P$ v- D        
do 3 O4 B& \1 m4 R2 ?  ]( K: [
        {7 r3 X% i/ ^6 E( U: R
            cout
<<pIpAddrString->IpAddress.String<<endl;+ s1 ]6 Y) r! v
            pIpAddrString
=pIpAddrString->Next;8 p* l9 V1 S% T6 y8 j6 e+ M
        }
while (pIpAddrString);
: k# V5 {& n1 R2 r0 @7 ~4 [        pIpAdapterInfo
= pIpAdapterInfo->Next;
1 O6 p! g, ~( V* x2 j        cout
<<"*****************************************************"<<endl;2 A3 v) T. B+ [/ X6 ?6 w3 Y( R
    }+ t- r3 p+ S; T. v9 C  K9 j
   
return;
& W: T, n; D0 l; U8 ?}

" W/ ^" b" V4 w) O: Z" Y2 k; b
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了