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

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

admin 楼主

2017-10-11 21:24:30

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

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

x
: x% P4 f9 V8 m- ?9 J% u2 q
( j$ G$ o0 Y$ _6 L* q' H! |

4 W4 x4 H! Z4 V' P' z// 头文件包含: g- R. |  d0 Q. a  m( c
#include "stdafx.h"
# h0 S2 H9 x! S#include
<WinSock2.h>
2 T* @# A5 u" G7 z#include
<Iphlpapi.h>9 }' X% c" ~% k8 c- w! @
#include
<iostream>+ [  ~4 |  M) y- ?9 G: F
using namespace std;+ K6 L' H- H( t) `. u+ G' @
// 函数声明
, i0 P- u. }( F5 \8 T* c
void output(PIP_ADAPTER_INFO pIpAdapterInfo);" M! }3 Y) o3 o3 |3 w) }& W
// 程序入口
7 n* A- F1 z4 X* R1 j8 F
int _tmain(int argc, _TCHAR* argv[])/ w: u$ v7 Z" u( ?
{
( q4 S' t) S% |5 B3 w' z   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
4 ^/ R$ B" d( ?! Y3 M
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
6 u% Z9 }# i5 u   
//得到结构体大小,用于GetAdaptersInfo参数$ ~) s" W* `" p+ \$ N0 s1 z0 b
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);! i1 d) [- j, l" k/ U1 x1 L
   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量  I/ N: C& U+ }8 {' D$ Y
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
; C6 p. O. i1 m) N   
if (ERROR_BUFFER_OVERFLOW==nRel)
" l- e  j' W" A8 G& ]/ c    {
6 b7 B& o2 d6 I         
//如果函数返回的是ERROR_BUFFER_OVERFLOW5 Y& H( u; N* i0 Z
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小8 A8 x. z7 T+ |  Z/ Q# {
        
//这也是说明为什么stSize既是一个输入量也是一个输出量
5 p" s& a! B8 g  ^7 l* @. D. Y        
//释放原来的内存空间1 l. \& [* V; ]- B, v
        delete pIpAdapterInfo;! Y% t7 ^& G1 V
        
//重新申请内存空间用来存储所有网卡信息
- k; M) M/ C2 f3 ?8 t3 N( L
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
% g) ?$ e* _3 {2 a4 o( i        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
1 u) b% X3 f/ s
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);   
9 J  {& S. V7 ~& T+ \" O* _$ s+ l: ]. U    }3 ?+ Q# k& l' _* i0 u  l
   
if (ERROR_SUCCESS==nRel)# @( Z  u: @! Z8 P
    {
; m9 h+ Z  J+ p( [        
//输出网卡信息9 `  _; T/ ?/ M' [7 J" c/ F# S
        output(pIpAdapterInfo);2 x, N5 |3 w( o
    }, w: O9 e7 w* [7 j# i3 @* ^& _
   
//释放内存空间+ i1 D* x  ]3 }* ~4 {
    if (pIpAdapterInfo)
% \1 k. u5 O% F    {$ v0 S% e& k* c
        delete pIpAdapterInfo;3 ]8 Z2 F$ Y8 u+ V" m- z+ b2 j
    }
; V. y7 q* D1 [0 W! x6 j) {    getchar();: D# d7 b& Q6 P, m9 F; k
   
return 0;' }1 e0 }1 [8 R# a' \3 B* I# V
}1 W! {  M# w- Z9 E1 `% o" c* V
///函数作用,输出网卡信息- O: P5 g2 l% f
void output(PIP_ADAPTER_INFO pIpAdapterInfo)4 `$ Q4 x$ }+ Q0 I- A; O, \
{
) ?- d5 r! X: g6 z* X   
//可能有多网卡,因此通过循环去判断5 n  p* {) o" i0 i" N8 z- X$ h
    while (pIpAdapterInfo)
1 h: [/ X! R' G- d    {
6 t4 {. g6 A& S# U- m, B7 _        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
# t/ U7 U; w8 C+ \3 {7 p& v        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
, B( i* H/ b5 j6 s$ I! p        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;$ M- J8 Y  [2 _" o7 b5 a
        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)+ h& F0 S- o* W+ Z
        
if (i==pIpAdapterInfo->AddressLength-1)
' n) j, g- j6 y) U2 I$ M+ Q        {
! d( L( u7 C, r            printf(
"%02x\n", pIpAdapterInfo->Address);
/ N" y8 G4 S8 Q        }3 N. L5 w0 j2 `% B: o/ {
        
else0 Q) p4 h2 Q, U- Q
        {
* i  p8 X$ q$ |2 q) P/ A            printf(
"%02x-", pIpAdapterInfo->Address);# n; p) ^) y+ w6 m) _# F4 J
        }! J$ i4 `: R3 _* q0 L+ \
        cout
<<"网卡IP地址如下:"<<endl;% j3 S( p4 p/ W0 _( O: N, b3 F
        
//可能网卡有多IP,因此通过循环去判断
9 |# W( L1 y; R2 n/ z
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
- a, c& A6 }2 G/ Q        
do $ @5 N1 o! ^; @, e5 ^+ W, q! u
        {% z. g+ k  r/ k: X
            cout
<<pIpAddrString->IpAddress.String<<endl;
* u, y0 K- `+ U0 k            pIpAddrString
=pIpAddrString->Next;* u5 c' G# U+ }0 c. y
        }
while (pIpAddrString);
) M4 Z/ `2 X& ~/ w. \        pIpAdapterInfo
= pIpAdapterInfo->Next;
; A2 |+ X. l1 T3 g- C        cout
<<"*****************************************************"<<endl;( ~, ]3 L/ @" b! b
    }
2 Y$ ~  r* {7 k; e+ z7 m5 K   
return;, p1 d6 T1 H# X% b& P0 E1 B
}

9 J" `2 |# r# h$ c) R0 y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了