PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[转载电子书] C++的方式获取当前系统的MAC物理地址

[复制链接]

2017-10-11 21:24:30 2848 0

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

admin 楼主

2017-10-11 21:24:30

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

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

x

" r9 m( g) [4 z+ b4 h( G" R4 w1 U

) r7 `9 F8 s+ n6 Y" w! P- N// 头文件包含, w2 ]& X/ W+ V& a- }8 ?
#include "stdafx.h"
+ G8 a( L# q% |7 u3 a+ t7 B3 _9 m# u#include
<WinSock2.h>
2 u/ C; @, t- C, q2 n" x- g#include
<Iphlpapi.h>
8 W5 `, j5 U& R4 k/ r, p, N2 @#include
<iostream>: ?3 c$ y! C8 \  u+ Z' L2 }  n
using namespace std;
+ T9 }; Q. J3 ^3 `% F
// 函数声明  a3 ?$ A5 G2 z
void output(PIP_ADAPTER_INFO pIpAdapterInfo);6 r: }; G0 C* }2 W8 e) W0 k) @9 h+ i  V7 D
// 程序入口
, w# _2 o. c; x8 H1 ?
int _tmain(int argc, _TCHAR* argv[])
; L$ u* r/ y1 d) a) F! D{
( W- [8 f8 m6 u& t4 G( i" Y1 H1 q   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
$ I$ L4 L3 O$ |) R# i. b
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();" G6 b& }9 Q* {6 {/ Y
   
//得到结构体大小,用于GetAdaptersInfo参数# U2 d4 w% r8 U# p6 M0 w/ f
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);1 ]# |2 h2 ]; H3 ~4 j  L! }
   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
+ K2 E- Q7 Y* Y) y) P" `; g6 V
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);# {- {# r" E' j" k
   
if (ERROR_BUFFER_OVERFLOW==nRel)
. |) g1 m1 ^3 F6 c    {) h+ r# R6 w3 C5 a( v8 q
         
//如果函数返回的是ERROR_BUFFER_OVERFLOW7 Q! g2 [5 T" S( j
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
$ H8 g* T0 i9 z" r+ P7 t        
//这也是说明为什么stSize既是一个输入量也是一个输出量
  ]1 }, [8 P( j5 @        
//释放原来的内存空间. ^. \, z) V1 Q/ G* M* O
        delete pIpAdapterInfo;9 f  y- @+ `( t4 A4 _# l% d
        
//重新申请内存空间用来存储所有网卡信息
# C& g0 N( @5 G( \7 |( z
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];4 E# H5 J8 G9 q' F" f& p. L2 B# P
        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
) |3 S0 m) |% f
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);    * X4 {5 v+ L3 x8 z) Z
    }; m" M7 ?' o2 V+ x. l1 V6 T( Z
   
if (ERROR_SUCCESS==nRel)
! T3 v4 l; {3 T* g, g& A% h    {
7 `. f# p& a1 g# T        
//输出网卡信息
  u6 `/ @0 C) z2 E' W
        output(pIpAdapterInfo);; g7 ~- U" Z: m* h- P3 A; F
    }. i# M" d5 z4 x6 W4 s
   
//释放内存空间9 i; `! `4 H+ X1 Q
    if (pIpAdapterInfo)# a" c2 m. m! \2 N
    {
7 x% Z- y% C% X7 j* ]' e        delete pIpAdapterInfo;
6 j7 f) \6 j8 F    }
- H& u3 d# v. b, e8 g    getchar();
, ?) J$ l/ O6 ]  Y$ V( G   
return 0;" B5 G3 n8 f  j. |; _( C" q
}
3 C# x. |3 |# ]7 H
///函数作用,输出网卡信息
$ f- u, ~' {3 _, |) b( F# R* n) x5 H
void output(PIP_ADAPTER_INFO pIpAdapterInfo)  w& u6 s2 D9 Z. Z- G
{
( E) V8 h+ |2 ~! p$ I   
//可能有多网卡,因此通过循环去判断
' `8 \  g0 n# ~6 Q, v
    while (pIpAdapterInfo)
2 f- R- Q/ W; f# p/ H    {
  M! p3 W, d  ~, J7 Z% \/ X        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
0 g9 q. _( L7 O7 F9 j! J4 V* I. `+ M        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;5 ^/ `* U2 {4 w, s% f" ]" Q
        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;- ?7 h5 ^  Q; J( J: p2 Q, V6 z
        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)7 k* @6 D/ X4 H; G$ ]" _
        
if (i==pIpAdapterInfo->AddressLength-1)" D1 T4 {" l# w' {, V: ]* P% \0 F
        {
& R! t$ K  |3 b2 U0 K/ M            printf(
"%02x\n", pIpAdapterInfo->Address);4 m9 @7 ^6 j% [" o; |
        }! Q7 ~6 q: ~* N  [/ T/ h
        
else
3 R9 f9 N; \; s7 ^4 g+ O        {2 r. b' S# A+ v  @+ x! w
            printf(
"%02x-", pIpAdapterInfo->Address);
  T& r, ]  m% G- p/ k* [" x        }
3 ^7 G1 ~0 Y+ ^4 v3 p+ O- i        cout
<<"网卡IP地址如下:"<<endl;
8 g, J( g3 s7 p) K. v3 p6 |7 I        
//可能网卡有多IP,因此通过循环去判断4 l" _' j: B) d6 _  A. A. A5 H" c) T
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);6 W$ j0 _" x$ c  X4 s4 ?" V
        
do ) B" N* Z) x. B) e5 l. P5 u8 s  G
        {
. t- Y* h3 o2 k            cout
<<pIpAddrString->IpAddress.String<<endl;% `- `3 I8 m# a0 o
            pIpAddrString
=pIpAddrString->Next;: I: O' X6 P) Q' d. ^/ K
        }
while (pIpAddrString);
3 m& c* J# i- A        pIpAdapterInfo
= pIpAdapterInfo->Next;
' j3 K+ T6 w+ ^6 i7 J7 `1 ~        cout
<<"*****************************************************"<<endl;
# N8 J% R' J  z+ j    }( f5 d4 p4 g  C
   
return;
! w7 f8 T. c9 p: s* L}
$ U: F; _. u) i0 S* c3 u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了