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-17 21:05:45 3457 0

admin 发表于 2017-10-17 21:05:45 |阅读模式

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>
" t. L9 m  P: o; {" t4 p#include <Iphlpapi.h>
" I$ v) t; d) F" Q#include <iostream>) q4 W' [) \! M) y
using namespace std;5 k( z5 b, g* U- l  f6 T6 l6 a
#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库
( Y- _! s7 f! i; O: i6 X6 v9 |: P
4 ?- t( ^- ~1 T2 lint main(int argc, char* argv[])' P6 j/ }1 l- |1 Y0 H5 G) Z9 l' e2 t
{
, \& C' _4 w; X: h& X! J  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息9 p: J2 G8 d, ?0 z1 q
  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();% h0 ~9 {' b* o6 }
  //得到结构体大小,用于GetAdaptersInfo参数
" |3 ~2 x& \; W' n' F5 h  unsigned long stSize = sizeof(IP_ADAPTER_INFO);# z6 @; t8 B' ^6 s$ Y) ?# j
  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量" j! h, g: h7 Z4 b+ M
  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
4 P5 F/ P; U! K) i  ^' _  //记录网卡数量
; ~) z' }* b! i% p4 P  int neTCardNum = 0;
% T6 H0 ?. N8 I; P$ ?+ x1 i3 H# j  //记录每张网卡上的IP地址数量
# |# a7 y" [. L- f/ W  int IPnumPerNetCard = 0;* w) `' H3 A7 c; p: w
  if (ERROR_BUFFER_OVERFLOW == nRel)
. q# G4 J5 k# h, L! G8 i  {/ `9 H" q7 d! q$ z9 D4 v$ ^* h1 A
    //如果函数返回的是ERROR_BUFFER_OVERFLOW
7 K% Y! H, b# F$ Z7 Y    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
+ G. P( ]0 P5 H    //这也是说明为什么stSize既是一个输入量也是一个输出量9 T5 \2 O" B& Q
    //释放原来的内存空间# c8 Z; ^  P: b, q* B4 e
    delete pIpAdapterInfo;! \* u( z# y0 j! a  ]6 O9 x) x
    //重新申请内存空间用来存储所有网卡信息
- ?8 B* ^) E, ?0 u9 w    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];/ f7 n" g7 ?! J/ d7 z8 B3 M
    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量1 ^7 ~& g4 o' [: j
    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  
4 ~3 D# ]" ?7 `# c4 D( Y  }
' |1 U; j' X$ P2 j3 q4 L  if (ERROR_SUCCESS == nRel)
3 a3 g# q5 N1 n! Q3 \" K3 w# U  {
, Q" X9 a* g4 w* p# n9 q6 [    //输出网卡信息! D: Y: r. t% x; I! Q" L
     //可能有多网卡,因此通过循环去判断
# b" M: ]) {+ Q) }  while (pIpAdapterInfo)- e8 k3 T5 f' P0 c8 d
  {$ v* T6 R1 r* q3 _" y
    cout<<"网卡数量:"<<++netCardNum<<endl;6 y; }% e4 |$ O8 H% C0 ~# v
    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
8 A9 z: D* {; s8 ^1 E" C" w    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
' U/ i9 H+ O: r/ t5 H; X    switch(pIpAdapterInfo->Type)! P. i3 c; K5 S# d; @
    {
+ L4 Q! a1 j* [% o7 I6 n    case MIB_IF_TYPE_OTHER:
" k4 ~) ^1 f) q" v! d3 r) n! t      cout<<"网卡类型:"<<"OTHER"<<endl;
* b- `& N( }( ?; P      break;. o. }4 v6 U: Z  v
    case MIB_IF_TYPE_ETHERNET:+ S- ^( _& D0 y4 Z2 B5 G4 n
      cout<<"网卡类型:"<<"ETHERNET"<<endl;9 b1 T, |. r9 {7 e) O- |5 ?
      break;& Y7 H6 ?; b+ I4 j
    case MIB_IF_TYPE_TOKENRING:
- B0 M4 q1 r0 p! B9 |+ Z/ Q      cout<<"网卡类型:"<<"TOKENRING"<<endl;# z4 |% w3 j! @. I
      break;' b4 S! F* R0 Q$ f
    case MIB_IF_TYPE_FDDI:
' G4 \8 h7 I( L& }8 {" c  u* z      cout<<"网卡类型:"<<"FDDI"<<endl;1 N' n# K; {, ^& N7 k+ G0 V
      break;- }6 x+ D! `* t# v
    case MIB_IF_TYPE_PPP:
+ k2 l+ Z, f2 d" f+ q6 y      printf("PP\n");: ~3 @8 |4 c* {3 k4 i/ t8 R
      cout<<"网卡类型:"<<"PPP"<<endl;
# b8 s: d9 U0 ~      break;  A' J7 C& \- z9 x( c* w  ^" i
    case MIB_IF_TYPE_LOOPBACK:! c1 x# t: E4 O' S
      cout<<"网卡类型:"<<"LOOPBACK"<<endl;* D* V, O% e# o
      break;& b. L# @) s1 X; d4 M# ~. u4 k. L2 v
    case MIB_IF_TYPE_SLIP:4 X. W) {, U) v! W
      cout<<"网卡类型:"<<"SLIP"<<endl;
4 X; h( C  G' c6 h6 V: l      break;
. W8 E# Q) f) i. g/ p    default:
( x$ ~0 o  A$ M$ n. L- t7 N8 F. t' R) a( T
      break;
* {; U1 M$ q' M# [8 w    }. c( [2 p% L7 X* S: T0 B  `2 G
    cout<<"网卡MAC地址:";6 L+ t# ]) j: }8 h
    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)
' v3 S' v; z4 d+ J$ Y% z      if (i < pIpAdapterInfo->AddressLength-1)5 j! M% f* B+ U
      {
, d, S. z7 _8 @: M        printf("%02X-", pIpAdapterInfo->Address);
1 q9 q& ^9 a7 E      }& c' ^/ x% |/ b. ]/ p
      else+ S3 }/ O% F, _  ~5 G' P+ D, Q9 t
      {+ m# j  ^; a' n4 J
        printf("%02X\n", pIpAdapterInfo->Address);6 l2 _% u. R8 X6 E
      }
* W6 J- i  p6 l+ P      cout<<"网卡IP地址如下:"<<endl;! e, a  @& ^9 `  B5 v8 ~0 |! I
      //可能网卡有多IP,因此通过循环去判断
" p" W: I3 @: b( _      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
; J* t- I1 Q0 r( r1 o' s! j      do+ H5 n1 b3 D3 Q1 L4 ?" Z
      {
  R0 a+ H1 f- A7 x        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;# I: q9 u6 u2 T( s, O( ~+ Q
        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;, M; m, D; ^- `/ w& \
        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;
$ T2 m1 V, y# Q, G* _        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;- W5 H7 n/ F8 c8 S4 L
        pIpAddrString=pIpAddrString->Next;
, K: F* ?; X- [: v: x6 v" U      } while (pIpAddrString);7 F7 M/ U5 r5 Y* C$ h. S* J
      pIpAdapterInfo = pIpAdapterInfo->Next;
# H1 {: W- s' y* T& F( d' n- y      cout<<"--------------------------------------------------------------------"<<endl;1 r* Z8 Q! Z9 J8 ^
  }
6 L0 k, i4 t7 w# [% o   
$ f$ p4 z3 e6 X* L! c* L  }
" {/ e' D5 K, ^0 U; q2 K6 {  //释放内存空间
* q4 R2 J7 @/ R4 r1 j, B7 ?) ]  if (pIpAdapterInfo)
7 I: W) h  b! b  {
1 o* h: k5 J* b* @0 h    delete pIpAdapterInfo;2 M% z# \- M3 u6 h5 h) D1 W
  }  Y+ I3 W( X- C) X, @: Y
  * N8 W% `  L( k' z
  return 0;- g0 e4 d- O) n: [5 R5 k
}: O2 \3 |0 B* f5 {" U& b
; b. m5 S3 C4 a7 [4 [4 b
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了