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

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

admin 楼主

2017-10-11 21:24:30

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

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

x

4 y1 ~0 s& }# Y$ _% u
0 h* ~( K# y- ]9 j, ~! {
2 C$ e  [: K# u// 头文件包含/ t; P# D' g; B  D. j" b
#include "stdafx.h"
+ Z3 O9 m+ v) z2 r- C. T3 M( Q( S1 `#include
<WinSock2.h>* [9 s* Z3 u1 c3 |+ q5 t
#include
<Iphlpapi.h>& \4 Q3 E4 R: C
#include
<iostream>) |% P5 B( A1 w$ P9 L* E) Y
using namespace std;" ]# c/ A# X7 m4 H& R
// 函数声明
) P5 {$ |# ]( l( B2 D8 P3 z& U  L
void output(PIP_ADAPTER_INFO pIpAdapterInfo);  C5 Z$ E7 K* ~/ m" G4 D
// 程序入口( n$ ^$ p, b  D! D3 B5 r! E3 W0 u0 y# @
int _tmain(int argc, _TCHAR* argv[])( K) Q3 C& q0 x4 Z9 A
{5 r0 w# ~9 C  \$ z! [- n( m* H6 ^
   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
  q2 B* M1 k' H- |
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
2 q- Z9 @; L9 k7 J   
//得到结构体大小,用于GetAdaptersInfo参数3 [; s' b+ U8 E7 K5 [+ X; E
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);" O3 r6 r* G( H( M9 \/ }
   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
9 O% b+ c2 d0 q8 s
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
0 y7 `% i3 O. U  ]7 k   
if (ERROR_BUFFER_OVERFLOW==nRel)8 K; I& ^" k) K( b6 `3 w3 m
    {
* I5 P4 w5 D! O         
//如果函数返回的是ERROR_BUFFER_OVERFLOW
, o6 x  U6 d, R' d' r+ w" A. {    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
7 x' K1 |4 S/ m" s: f9 R* P        
//这也是说明为什么stSize既是一个输入量也是一个输出量
9 E: q8 P; ]4 |% n. k        
//释放原来的内存空间, B- T  M" h- H2 J
        delete pIpAdapterInfo;
& r/ s4 @# `6 R) U8 b( W' F        
//重新申请内存空间用来存储所有网卡信息8 f% S2 O" P: D0 W
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
4 h3 Z; \7 O: d        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量( g; u/ h* _  j% K
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);    8 t/ Q' B8 x& N2 r& G, A6 B
    }! I4 ^5 x& c8 N+ D
   
if (ERROR_SUCCESS==nRel)
1 @) \$ b% T: }0 K' y    {8 r1 m( w/ `( n% X! ^% B) s6 w
        
//输出网卡信息# A" C$ s- w) J- Q
        output(pIpAdapterInfo);0 a% f. q- |; Y
    }
; k- `0 W, G6 Z/ z7 F  u/ {- ?9 O   
//释放内存空间4 ^; t% u$ h- ]8 |. L* m
    if (pIpAdapterInfo)
, L; s) D6 \; L& y5 n7 C; J0 f: h    {
: T5 t  E. i( ^4 }, C" U        delete pIpAdapterInfo;( r7 I; w) f2 l1 a, o! L" D; j
    }( W/ a) ]" J0 q+ Y
    getchar();$ J' R6 V( _  U& f' ]; v& {! U
   
return 0;/ q7 S& E* }0 N* i( L
}
; u. e" Y. B3 J" O1 l) E. |  k
///函数作用,输出网卡信息
  J& s7 ?) V5 g6 c' ?' \0 k# X
void output(PIP_ADAPTER_INFO pIpAdapterInfo)4 b9 {; r2 s6 t
{; Z! v8 z4 h/ L* u3 W; V. r* d
   
//可能有多网卡,因此通过循环去判断
' a8 l( \) a, ^) g
    while (pIpAdapterInfo)8 b+ n/ T' Q& z
    {
- g+ w6 C  g7 _0 S% S( v/ R        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
  I6 Y: s5 V# i( E5 W        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
2 F. `, o8 d  K7 G2 T% g        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;5 K* v  T! l- ?' L
        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)
- C% E  D( Z& F- S  _7 |! f& S! P* e        
if (i==pIpAdapterInfo->AddressLength-1)
% d% f: [+ Q* m        {
% b& ]( x% f7 n; d3 i1 R            printf(
"%02x\n", pIpAdapterInfo->Address);
+ T( s  z* J' F/ Y$ T# c3 ?        }
4 k2 I: d, c+ w0 T5 T6 s8 _        
else
* ~/ D: y8 ~3 ]) `* R. p        {
. v: B  d* O4 o& m" U            printf(
"%02x-", pIpAdapterInfo->Address);" @- D  Q- K3 d: _7 x9 x
        }
3 b: [+ g8 G% B( Y3 l+ A+ ?        cout
<<"网卡IP地址如下:"<<endl;
$ z0 a4 o, L! i% u        
//可能网卡有多IP,因此通过循环去判断; T- k1 K! A7 N8 w+ z2 a5 X5 j
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
; [% }" y- W& ]% [        
do
6 v- {/ g& F+ w' R" O' H/ u0 w. F        {
4 v1 q' [  W1 m1 ?& \3 }. G            cout
<<pIpAddrString->IpAddress.String<<endl;5 t5 _& ~% ]- e- ?* \
            pIpAddrString
=pIpAddrString->Next;
9 @+ [& X4 O" i, `; X        }
while (pIpAddrString);$ s! y: B: M7 M
        pIpAdapterInfo
= pIpAdapterInfo->Next;
7 \1 [) a: B2 l$ ~0 O. e8 ~/ p8 B        cout
<<"*****************************************************"<<endl;
( o$ H- Q' ]6 ?5 K* J/ D    }
8 }- c9 T" O8 v# u0 O   
return;' K2 u, N* I) g; f: @
}

9 A5 Z+ p7 i/ _$ w% R  v# Q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了