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

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

admin 楼主

2017-10-11 21:24:30

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

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

x

' w! x0 l# P7 S8 c2 L' C$ u& |1 D1 ]+ a2 b

0 {2 x3 k! c) {// 头文件包含
. P* N9 T. M4 ?
#include "stdafx.h"
% ~" g! ~2 q7 P  k#include
<WinSock2.h>
' a2 w/ m$ W3 a6 B- |' ~' d#include
<Iphlpapi.h>
( _1 w7 W( _! w5 S* P; A( L0 i#include
<iostream>: y! x) c& c' X+ z
using namespace std;
$ q$ S- \. ~- r2 T2 T! |
// 函数声明
, H6 H/ z, E3 m: @  k& [8 j8 E7 a4 g) C
void output(PIP_ADAPTER_INFO pIpAdapterInfo);
# w" S" J9 K' q! s: Z( V# S8 M
// 程序入口
, P: _% l5 S9 p' k( [1 C
int _tmain(int argc, _TCHAR* argv[])
; i' V4 [0 z$ Y$ \9 e{# D# z# K1 K6 \" y
   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
. l! i1 q+ K8 ?0 X
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();% x: t3 b; R2 _$ i9 n
   
//得到结构体大小,用于GetAdaptersInfo参数
. V: u6 g. Y6 r, h  L
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);
3 }: ^  o$ B3 o. r( o6 S5 L  L8 u7 v   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量3 e( k+ U+ ?4 L; z4 ?7 Q" E5 W
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);8 e! x# T+ P* f5 X9 Q( R
   
if (ERROR_BUFFER_OVERFLOW==nRel)1 R" ?0 y) j% A1 Q3 B' ~
    {; t5 K7 v6 o* {! Q* ~. ~
         
//如果函数返回的是ERROR_BUFFER_OVERFLOW
3 s/ P1 ?6 W$ h: V    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小. Z* j& x" {" R; x
        
//这也是说明为什么stSize既是一个输入量也是一个输出量
% q, G5 G/ U; S4 k  L' K        
//释放原来的内存空间
  L0 D2 z4 G  }3 C3 Z: K, F4 b- _
        delete pIpAdapterInfo;2 |3 K  ~% t! }8 F0 \' r2 R
        
//重新申请内存空间用来存储所有网卡信息% n/ `/ S9 ?3 ]6 W- c9 o
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];  Q! e2 @. Z6 ~8 m- z
        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量9 _, U% d! L9 p2 ^
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);   
, Z  K1 c, C. f0 R& T    }
8 S! M6 D: \% B9 j3 \1 N) t9 f% Q   
if (ERROR_SUCCESS==nRel)
. R2 S: h+ b' j8 W8 _$ I3 g2 m# U    {
6 t2 {; y- S' r& I        
//输出网卡信息
9 z( T- ^( [  I
        output(pIpAdapterInfo);
) o7 c. P  }# s8 w    }7 s) C1 I( a* m& {; Z% j
   
//释放内存空间
$ H% m* [; D$ b7 m
    if (pIpAdapterInfo)1 e' L1 D& Y" c! }# D3 e9 I% p
    {
1 g% k8 z% R$ ^  ~. q! C% K        delete pIpAdapterInfo;% i  N0 i# L9 O) q, }( i' p2 S
    }
7 p% f6 b, _7 c, Z    getchar();1 ?( A" J" i3 A/ V* c6 T. g8 v
   
return 0;
( S9 ]: m2 _" }" s( G5 q}; j' U, j, F) f8 x& C' Y5 K
///函数作用,输出网卡信息
8 f! j2 [+ u4 }5 l
void output(PIP_ADAPTER_INFO pIpAdapterInfo)7 h8 s  t& X# L# p! N
{
) u9 {4 [% y0 T   
//可能有多网卡,因此通过循环去判断4 ^# d; n/ w- H5 E
    while (pIpAdapterInfo)5 {& r0 B" H6 @3 V, h1 b
    {8 T+ {/ _3 j/ Q+ E, l# m
        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
- u3 j5 d0 G$ t1 U( I        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
) s, n" z  H. J! c7 ~1 x) l        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;0 A( l0 ~5 K8 z- D$ f
        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)' \) O6 S/ W" t' ]' [5 I- \0 b8 k
        
if (i==pIpAdapterInfo->AddressLength-1); l7 ^3 M8 J& A1 s: k5 k1 Y
        {5 l4 ~( v: ^7 R& }  c
            printf(
"%02x\n", pIpAdapterInfo->Address);
1 {* T# h$ M0 N+ O0 t3 y        }
1 Q( r( H- K) p        
else# D9 I1 p: a1 d8 Z' ]7 {6 S
        {
  I" D, f+ Y( @1 M            printf(
"%02x-", pIpAdapterInfo->Address);
4 C( z$ B1 K! d! }0 G  p        }7 b8 A9 X) L" e: b( V! \; R! F
        cout
<<"网卡IP地址如下:"<<endl;
) O2 n  w0 d+ L3 f5 i) a( c# N        
//可能网卡有多IP,因此通过循环去判断* }1 K: A/ {& Y% p* R  e
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);) |: u' \7 O+ ~! O
        
do
  j- I! R9 S6 m9 g# T        {
& p' X' N, n, I* I            cout
<<pIpAddrString->IpAddress.String<<endl;
& N% I; p! Q2 E$ V1 l            pIpAddrString
=pIpAddrString->Next;
) }" K) v% w& b0 `( w- L# Y        }
while (pIpAddrString);
8 j/ Q' i) o1 e        pIpAdapterInfo
= pIpAdapterInfo->Next;7 X0 \+ k- U5 o' h9 {
        cout
<<"*****************************************************"<<endl;& K" l5 O  i! `* m
    }- L/ Q1 u; b1 q1 J  b
   
return;
) k* y% w# }0 p/ ~; B6 X: P. }}
1 d; E, W' g+ W. A
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了