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

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

admin 楼主

2017-10-11 21:24:30

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

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

x
6 _3 ?) u: p3 K6 H. ~% e

# F: B7 ]+ y( s9 b9 k5 H& t9 Z$ E, f1 l, Q4 }6 N
// 头文件包含
6 J& M2 _( z& O+ k
#include "stdafx.h"4 [1 b4 u" |. Q6 U: I
#include
<WinSock2.h>) {, Y: n& m0 W
#include
<Iphlpapi.h>* ^0 \+ l3 m) g0 E9 u
#include
<iostream>! ?( h( v2 w4 m! s" M) `1 e
using namespace std;
- ?& h8 z3 g( Y0 L; _: D! z
// 函数声明6 I$ D7 D9 k3 u* n% S& C( Y) \7 V8 w( C- O
void output(PIP_ADAPTER_INFO pIpAdapterInfo);! ?; ~% U: t7 y! V
// 程序入口
+ Z% V# O$ e. o
int _tmain(int argc, _TCHAR* argv[]): u$ U' E+ \# g% z2 k7 f
{# q$ _( W% Q, s3 O/ W9 b# Q
   
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
: q; o) u+ c+ k7 g# R! h
    PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
! l0 e7 {  D' k$ G1 u   
//得到结构体大小,用于GetAdaptersInfo参数- j" l5 {8 f2 |) c" `
    unsigned long stSize = sizeof(IP_ADAPTER_INFO);
* i3 [, u5 \, Y0 a& s( Y   
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
! |: c6 I' S; w" V9 y8 m- r9 q& p
    int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);  Z* \! F) s9 U( f7 H6 E1 Q
   
if (ERROR_BUFFER_OVERFLOW==nRel)2 x5 p4 x. f% {+ K5 [, u
    {
0 K2 V1 j; b7 ?7 a0 w         
//如果函数返回的是ERROR_BUFFER_OVERFLOW
: m6 }2 v9 Z7 l    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
3 s( S/ E' U3 Q3 ~) C: D        
//这也是说明为什么stSize既是一个输入量也是一个输出量" ?( f) p  D" a
        
//释放原来的内存空间: U9 ?3 N. n1 Z* i3 T) N/ e% i
        delete pIpAdapterInfo;
% v' g* {( w: ^; B" I  d# r        
//重新申请内存空间用来存储所有网卡信息
3 z2 g. {7 b: _! r
        pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];9 C8 Z# g% Y0 |; @0 Q0 I
        
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
: w. M. V& R! B# E5 N
        nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);   
) o0 u# j% w+ i3 ~    }
! @5 g& c4 X1 h   
if (ERROR_SUCCESS==nRel)
2 K+ |7 ]% e" w8 i; S/ Y# L" ^    {
7 k5 q5 e- `: e' H8 |        
//输出网卡信息% I" [  N6 y( [' j1 K! j6 D+ _2 {* W
        output(pIpAdapterInfo);  u" \7 U8 B1 ~. K& [7 ^
    }
; C" }9 t  g- c+ D   
//释放内存空间8 \! W: F3 @3 v
    if (pIpAdapterInfo)" _2 D. _2 T& N  V1 N+ Y, b
    {
$ T2 o6 _/ S  e        delete pIpAdapterInfo;$ M# o( t1 {" }9 m2 F9 o. O& u
    }" Q" u1 t$ @9 V: K
    getchar();
& r; \' W) a; l. r, Z/ [   
return 0;+ J1 e9 c7 o- g+ L) u# ^1 Z
}
* D0 P/ e* D: o7 l+ q
///函数作用,输出网卡信息# {/ e2 r( e1 g
void output(PIP_ADAPTER_INFO pIpAdapterInfo), g8 B3 u+ P; I1 L3 T
{8 F" {% F% O! n2 X; C; T( f7 K
   
//可能有多网卡,因此通过循环去判断
0 p! m4 w; X  c
    while (pIpAdapterInfo)
# E! m8 h7 X( \    {. g) ~5 E" K8 [
        cout
<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
" E2 J+ b8 a) [$ i# Z" c5 j' N        cout
<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
& R* F1 B# n/ ?- L+ ^2 C        cout
<<"网卡MAC地址:"<<pIpAdapterInfo->Address;* d0 z2 P! Q) j
        
for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++)
# O% B: ^1 m) [9 B/ E        
if (i==pIpAdapterInfo->AddressLength-1)/ ^' a  V& \( ]3 B" Y4 m
        {
  l' e8 i1 ?$ F/ Y+ ^            printf(
"%02x\n", pIpAdapterInfo->Address);% O; ~0 D+ V0 w- m% d6 ~% y
        }1 K/ F& s& l; c6 x
        
else4 x8 `; m% W3 }% I
        {9 k: l; q# k) K5 g/ R
            printf(
"%02x-", pIpAdapterInfo->Address);( u  `! d* }! Q; i' p6 D5 Y: N
        }
& ^+ ]* F, [) j' X        cout
<<"网卡IP地址如下:"<<endl;  N& O: W- J2 d: K( \
        
//可能网卡有多IP,因此通过循环去判断3 q: a+ ^" x; I, @: l
        IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);/ \0 ~9 K: W: L3 d; t0 t7 @( s0 M# s
        
do ' n% S) N8 O( W( i' }
        {
& d! U' J( j' z; o0 ]            cout
<<pIpAddrString->IpAddress.String<<endl;
& [( v) Q9 R( @8 p            pIpAddrString
=pIpAddrString->Next;
" V3 h4 U/ y4 h        }
while (pIpAddrString);  U: ~. L: l1 Y( b; l: H
        pIpAdapterInfo
= pIpAdapterInfo->Next;/ j, }6 ~7 @  r$ U/ ]
        cout
<<"*****************************************************"<<endl;# V7 ?* ~+ F5 |: i
    }
5 Q( o+ L8 R7 P2 l. H2 h1 F, ~! J   
return;
0 \1 y# ^) r! c# R$ W) B( W}

5 R; G2 l  d2 F8 V  v
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了