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

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

admin 楼主

2017-10-11 21:24:30

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

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

x

$ I" r# g, s7 l9 J6 t: B
" W$ Y; m2 s* O6 J
1 @8 x1 a7 |! S/ Z// 头文件包含: i* G/ M9 `' g6 _
#include "stdafx.h"
( @3 ~& O  n+ V. {- j. M! Y#include
<WinSock2.h>
/ \% D2 }% S: T" N+ d4 q#include
<Iphlpapi.h>
4 J' i4 V) ~4 A8 A+ {0 p& ~#include
<iostream>
& v, v- \' X) |
using namespace std;
7 ]* W1 m  p& E1 V, z
// 函数声明
  v, w5 x9 h: G4 d+ w: l. R7 h
void output(PIP_ADAPTER_INFO pIpAdapterInfo);
, F7 L; v2 E' i- a
// 程序入口  ?( k0 O0 E) }
int _tmain(int argc, _TCHAR* argv[])5 m+ C% k5 W0 c. E+ q
{
& K/ S; G6 s5 E9 g   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息/ S) G) U7 @( f" g6 _( y/ y
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
% f& h) a8 v, Y0 ~  e- u   
//得到结构体大小,用于GetAdaptersInfo参数4 X2 l4 x/ ]* K3 s  \& F% h# g! P
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);, @7 E2 N7 N' G1 Y0 ^
   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
1 U% P' J. G* \0 C% d
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
/ A# Q- n1 |( X8 X   
if (ERROR_BUFFER_OVERFLOW==nRel)& `0 i0 }$ c' g6 z1 n
    {; m5 j! J3 a( Z
         
//如果函数返回的是ERROR_BUFFER_OVERFLOW0 N) I7 D1 U: l- s( t5 O! w" l$ G
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
7 }% H* D  v6 Y, F3 ?& t        
//这也是说明为什么stSize既是一个输入量也是一个输出量0 }1 w, n* Y  [* X
        
//释放原来的内存空间
  e4 y6 I; Q) W  U: {  T9 y
        delete pIpAdapterInfo;
' u! O1 w! G* r        
//重新申请内存空间用来存储所有网卡信息( s( L8 K$ t5 G7 T; Y
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
% Z% L5 x" S" f) ^, D5 l! a        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量, L: l; J$ b! y( Z' ?3 V/ k
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);   
' m2 B3 ^& f. ?    }
+ c0 e" o" N( v4 |2 o   
if (ERROR_SUCCESS==nRel)
3 T( T& e; B: \1 o5 A9 ?# v: @    {/ `# e+ w& {- R4 y
        
//输出网卡信息
7 J! s: y* q7 J2 F& k
        output(pIpAdapterInfo);" c' F' F% u/ q5 h5 @
    }
1 f9 q/ B5 v+ \. A: L1 w  \  {   
//释放内存空间
, D6 V% R0 d( I7 R* N  k  O
    if (pIpAdapterInfo)
+ x5 k0 B: v  ]1 e    {
% ]0 [! J/ g# u        delete pIpAdapterInfo;. t# x1 q6 R6 p  s1 F4 F7 O3 V
    }7 N) s$ i9 B) Y) {. f' D" D. o, E
    getchar();3 V+ f& N8 R2 c7 r' X+ K
   
return 0;
, D/ o, {. b  u+ n; s}
# C3 s& i: M, L) f
///函数作用,输出网卡信息
9 `) u0 e5 V( D& C4 n! Z, Q% E
void output(PIP_ADAPTER_INFO pIpAdapterInfo)
) S2 C9 D$ f2 s6 u7 q, a/ t{) \' p1 C: p4 ~' S2 d0 G
   
//可能有多网卡,因此通过循环去判断
7 W3 N8 Y5 [' }1 t2 i. S9 N
    while (pIpAdapterInfo)
7 B0 R% f. `' s0 o4 I7 ~    {
4 p2 g- Y2 n8 @        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
7 C; J  w7 I9 n- d( ?/ R        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;. V- l9 `: ^0 ]/ O0 K4 v8 K# N
        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;
  ^; S: X8 O4 \+ a" W3 y        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)6 d2 \5 S5 Q; E$ |  X
        
if (i==pIpAdapterInfo->AddressLength-1)- |! ?, f1 t3 y
        {' e. r  D0 G, p: U4 N+ y* L3 H6 c
            printf(
"%02x\n", pIpAdapterInfo->Address);
/ N9 r5 c: Z4 J' ]$ }: `; |! N        }
+ K) m  V4 m8 W: A2 B& z' ]8 Y7 D* G+ L        
else
. z; f. M) s8 _1 |. t, E# {        {
1 W$ n8 K9 `2 r1 c2 v# J8 l            printf(
"%02x-", pIpAdapterInfo->Address);
! t: \, M; ?1 \0 v" ~* i        }
' u& l3 I; B6 {1 p6 T; [        cout
<<"网卡IP地址如下:"<<endl;! D' {9 X6 W% s7 k4 K- _" B
        
//可能网卡有多IP,因此通过循环去判断6 }2 V% f/ ?8 d; h
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
6 P& \, i  x1 C4 p6 D- q( P        
do
, T. j2 o6 o  F& q        {
/ F' f& N" h( S9 ]  M  D            cout
<<pIpAddrString->IpAddress.String<<endl;' U5 U* o  v: g
            pIpAddrString
=pIpAddrString->Next;7 T; B( t- q9 \6 T- J
        }
while (pIpAddrString);
* d) \% y; m/ _* l3 R% v% x        pIpAdapterInfo
= pIpAdapterInfo->Next;
6 y" {& Y! p. {6 h        cout
<<"*****************************************************"<<endl;
0 f% y0 ^+ z; M- m+ h1 C7 b) q; q    }
. p4 Z, ?$ v' i* r1 M   
return;
& [% K% P( Q/ o1 H' w}

2 E, z# g5 T: K  s5 F0 S$ p# V# _- K
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了