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

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

admin 楼主

2017-10-11 21:24:30

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

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

x

* k, N4 ^8 K: i: m7 @/ C
+ M8 B" T4 Q" [) ~. ?, x! u: Z$ h% A) m9 F1 S2 l
// 头文件包含
/ q1 j) m) [. b$ I  n, G7 r
#include "stdafx.h"
; R. M5 M# J) R3 A. c; v#include
<WinSock2.h>/ h) n' J9 K; H& {$ g" P
#include
<Iphlpapi.h>
* Y& j3 o# _5 G8 i! V! i6 G#include
<iostream># o8 V0 @3 T. @" ^+ n1 @7 D( T
using namespace std;
0 y& a: S5 d$ u# s
// 函数声明* k& _9 C. M) N& d8 ~1 F6 S: [
void output(PIP_ADAPTER_INFO pIpAdapterInfo);! @% X8 k- n* q, J, [" \1 B) ~; V
// 程序入口& S. {( v/ r- c/ c
int _tmain(int argc, _TCHAR* argv[])' i. M7 H. v' S/ p8 q
{3 |2 ^, u( q' N& L$ M2 F/ q! b
   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息6 _  d" s5 d! i4 P
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
7 n# |& t  O' v3 ?& |; X   
//得到结构体大小,用于GetAdaptersInfo参数/ m: L" U, @" @+ G
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);; g3 |% ~5 T" ~! D
   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量- n1 |) l& ~# O
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);0 h1 C( J( }' B* D) X4 u
   
if (ERROR_BUFFER_OVERFLOW==nRel)9 V- G3 Q3 z- y0 [
    {
: V2 W  i5 G4 V         
//如果函数返回的是ERROR_BUFFER_OVERFLOW) g! g2 }. I* g
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
- H  H( `0 U, G9 p$ ~        
//这也是说明为什么stSize既是一个输入量也是一个输出量
: j9 |0 P' \. E# }: D5 i        
//释放原来的内存空间8 K& z8 D, w5 W; u+ y8 _6 i
        delete pIpAdapterInfo;
% ]$ Z, f' y' _6 U3 v& p- t        
//重新申请内存空间用来存储所有网卡信息  g* B2 `3 O2 Q  h2 y0 L3 T
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
: e3 K8 e8 V; s$ ^, Z9 F2 o6 y0 Q        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量6 @, `; R- k) f2 D
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);    9 k) }$ y- c8 }- S- A
    }
1 t4 @0 P6 Y9 i5 k7 c% E   
if (ERROR_SUCCESS==nRel)
% s, q8 j. ?9 E; J    {
' e, B) Q- m0 o6 i        
//输出网卡信息+ g* V3 I9 t+ S( J& v8 n3 J
        output(pIpAdapterInfo);
* l; _$ Y+ O, {" z; s    }0 ]* s/ J0 N% f/ x8 @
   
//释放内存空间- K$ {) O- Z6 H6 H- z* C; k. b/ R  ]
    if (pIpAdapterInfo), F% I  ^# n+ y  v* b3 G
    {# G4 C9 Q) K. ?+ i: e
        delete pIpAdapterInfo;
  g) E$ d! m! E( f( X    }7 S4 a& U' S! ~
    getchar();% k' E# N" G- h( {2 X" X' n
   
return 0;
7 ]2 s* J2 Q1 r! L0 m}8 I4 j# C* Z2 \2 q
///函数作用,输出网卡信息
  A' c. h' h4 `/ i0 K  D
void output(PIP_ADAPTER_INFO pIpAdapterInfo)1 i, r. ?" w& F$ X4 Y
{3 o% U; y7 N0 k- h- p; }' \# x- K5 E7 p- B
   
//可能有多网卡,因此通过循环去判断
- H" |4 H* M; V
    while (pIpAdapterInfo)1 Z& I6 S8 I  @  u
    {
. @% P9 ~" P$ t* R( C5 Y2 q2 f        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;" K7 Q- l) U8 N# z$ ?! m
        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
; b" ?0 I4 _7 \1 K        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;
. m" y: y  ?" M" r+ {% X2 K9 E        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)
9 @0 ~$ B" B" q- c' }2 m" O        
if (i==pIpAdapterInfo->AddressLength-1)# z, F) P' c  x0 l7 }4 L
        {% n/ v7 W+ v1 f5 i7 |4 c
            printf(
"%02x\n", pIpAdapterInfo->Address);" z# Y9 B+ X8 m# m4 A  F$ N# u
        }
" N! p! v1 B0 q  M, ?4 d7 }$ D5 @        
else! |3 O: D3 k* n4 u# v0 E
        {
; {/ n* j  \# {# @# v' R' Y/ B" r# K            printf(
"%02x-", pIpAdapterInfo->Address);
% B+ F) C5 l4 x- d% c        }
/ O0 }( @' D& R) c% r2 w8 A        cout
<<"网卡IP地址如下:"<<endl;
% S- M3 f$ a. ~: ?        
//可能网卡有多IP,因此通过循环去判断  C0 ^: r1 a2 S$ ?- E9 u, l! S9 i
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
( Y1 P1 V1 r( l- h: I8 o        
do
/ d( t, j0 z% t        {. D* T  X( ?' [$ x+ {# i( ?' \
            cout
<<pIpAddrString->IpAddress.String<<endl;4 }1 Y& c2 ^8 U! r4 j% F, N1 D
            pIpAddrString
=pIpAddrString->Next;
1 C3 D- J* D+ @. K        }
while (pIpAddrString);0 C; n! U% ]4 U+ E1 `% b5 S! \
        pIpAdapterInfo
= pIpAdapterInfo->Next;! u& E& u& r  r6 T5 U
        cout
<<"*****************************************************"<<endl;1 x, i6 b2 C: x1 R- a
    }
% K3 u8 z2 @$ ]4 L: o5 c2 q5 a) f   
return;% T  S; y& A. A" L3 b, l
}
6 M! P2 c5 \& w' L; ?9 f
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了