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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>
3 j/ e* z6 b- O4 t#include <Iphlpapi.h>  m  w) |2 I8 q+ A8 S1 M: u
#include <iostream>
1 P! B  U# h: vusing namespace std;5 J, b& G2 S0 r& p
#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库# `5 p* S! S& B, q8 R

* v2 ^6 K% t2 y/ H/ mint main(int argc, char* argv[])5 o3 ]1 T: v3 F% j
{6 K- D6 Y* L% r8 T) c7 U3 b/ \
  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息) o) G4 ]* E+ l; J' C: ~
  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();) W* I: \" I! d9 u' _# p
  //得到结构体大小,用于GetAdaptersInfo参数, R$ v2 \% L9 b% m2 a* H( `2 L
  unsigned long stSize = sizeof(IP_ADAPTER_INFO);' \( L# Q$ C1 @
  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
0 ]5 O4 {' b. V* f! h  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
& z. L8 d4 G7 ?. W. ]  [0 X  //记录网卡数量
! ^1 [0 ]7 c  @9 F, A- @0 K& b  int neTCardNum = 0;
9 ?' W3 f  R) N& O7 d( e  //记录每张网卡上的IP地址数量
( y: r9 `7 D0 j8 E6 M- E  int IPnumPerNetCard = 0;
0 ]  b& M# C7 `  if (ERROR_BUFFER_OVERFLOW == nRel)
( l" F' x4 H- C6 ~! X# V  {
5 l) K5 L/ l5 A3 T: _+ F8 p  v# m/ x    //如果函数返回的是ERROR_BUFFER_OVERFLOW; o9 [1 c; Q0 I4 p# G" M) I' \
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
+ Z3 A+ @" w5 [1 n  y7 c/ g* _" L    //这也是说明为什么stSize既是一个输入量也是一个输出量
1 E3 I2 [- f+ C/ M; [2 v: D, j2 A    //释放原来的内存空间7 j6 B6 a: e+ O+ j: i
    delete pIpAdapterInfo;
2 F. L( P3 t. x* f8 \0 T    //重新申请内存空间用来存储所有网卡信息
% y, f* `+ u# s7 c8 N    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];& V3 F! ~* }" p8 P
    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
6 j+ R- D6 s: |6 E( p( q    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  + h6 e$ a, G0 ^8 b3 G6 S2 K
  }
; J9 x; e/ o: w$ H, K  if (ERROR_SUCCESS == nRel)- r) n7 F0 B% E1 g
  {
) r# N7 ~- e7 L/ u( k    //输出网卡信息
+ b0 X% d* E. g& e" q     //可能有多网卡,因此通过循环去判断) I4 ^, N7 \  H, k' ~5 A7 [8 m. e8 T
  while (pIpAdapterInfo)- D1 y# ?2 c$ f; r# p0 z! {9 F5 h
  {
- v! I0 C: N' {; I    cout<<"网卡数量:"<<++netCardNum<<endl;
' B' G9 j5 e2 N- n' g: `9 P  g    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
2 l- h) T. u: ^( K6 \% D5 E    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
$ x, @7 x' f! W( D& e    switch(pIpAdapterInfo->Type)
9 e  @: g( k3 V/ s: ^. `1 ~    {
2 N, j( Z4 n) E; ?4 ?2 D9 N    case MIB_IF_TYPE_OTHER:" h3 a! ?! a+ r& d
      cout<<"网卡类型:"<<"OTHER"<<endl;- p8 L: m) q0 E
      break;
+ j, D+ P* ^! v' L; p    case MIB_IF_TYPE_ETHERNET:
6 c- G3 Q1 `4 [# G9 m4 E0 I' Y2 {* U0 }! }      cout<<"网卡类型:"<<"ETHERNET"<<endl;3 a$ Z. X8 i, v; i! ]9 F
      break;+ Z# R' L' v$ n$ b' I2 m
    case MIB_IF_TYPE_TOKENRING:
+ G$ Y5 n" a- K0 V( o      cout<<"网卡类型:"<<"TOKENRING"<<endl;: ~4 F& y$ V* _  Y7 D
      break;5 y3 V: j, k1 @" n' h2 `, ^
    case MIB_IF_TYPE_FDDI:5 n$ S/ d& b: ^, R
      cout<<"网卡类型:"<<"FDDI"<<endl;) Q  s1 e, F6 C" j
      break;* O. W" m% G1 h" S) @
    case MIB_IF_TYPE_PPP:
  n3 E! M3 F% T6 G1 C      printf("PP\n");
0 y  M! D. ?; V, F; w      cout<<"网卡类型:"<<"PPP"<<endl;
# _) G, u- ~. ~7 ~      break;) D3 q5 N2 R% k0 f* J  w! {1 K2 B
    case MIB_IF_TYPE_LOOPBACK:
9 m! @3 H8 S6 S      cout<<"网卡类型:"<<"LOOPBACK"<<endl;
) r: F* P; V% y$ G3 Y      break;
: J7 k" U( g( x+ R4 n    case MIB_IF_TYPE_SLIP:
% T* W6 M/ U: n& v0 g+ n' n      cout<<"网卡类型:"<<"SLIP"<<endl;
8 X- _) ]- ]) J      break;
5 R! g# _' D9 P, q  u    default:
8 ~0 q8 A" m) F2 B' Z; _9 D$ H8 a  u' T. j' T6 S- w
      break;
  \0 b5 |9 Y( Z2 N0 S4 e    }# P/ m% n3 p+ x. I' G) [+ E
    cout<<"网卡MAC地址:";
9 \! {, k: `: \0 X& A# B' ?0 m    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)
" ~$ m4 N7 x3 m; ?      if (i < pIpAdapterInfo->AddressLength-1)# W7 \2 F4 C7 `/ I7 s% Y& e; b9 M4 O
      {" l3 E# j; @' X- T1 O; W+ e
        printf("%02X-", pIpAdapterInfo->Address);3 ?7 y6 U" p- \7 ^6 U) J  }" g, p
      }
) m* v% L( `0 V" k; z      else& |. F+ l- g9 U$ T
      {( M1 b# [9 y5 b" U  m2 ^; |
        printf("%02X\n", pIpAdapterInfo->Address);/ J% j/ p, g; ?
      }
; f0 B& }2 u3 N( U5 a/ l      cout<<"网卡IP地址如下:"<<endl;
3 c7 d7 l, N, C0 I5 `" V% {      //可能网卡有多IP,因此通过循环去判断7 g( R) z1 g7 e) {. ~; Q5 J: p
      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
6 z* g) z5 E6 l* k# j: j      do" b+ s! `9 B% z5 k/ N5 ~) |3 v
      {0 {( l# W4 k2 M  `# m/ \  H4 l
        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;  K* [' u  `) L3 W+ c
        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;
! {# K1 u- b0 f4 W# ?7 ]        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;' U" Z: @3 g+ }( ~: N
        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;9 Y  Z) e$ ?5 G
        pIpAddrString=pIpAddrString->Next;( I: ^1 f+ a0 c9 f
      } while (pIpAddrString);
6 q4 J) O8 v8 R) B7 i: O      pIpAdapterInfo = pIpAdapterInfo->Next;
, A  D) i9 E! f      cout<<"--------------------------------------------------------------------"<<endl;4 e2 e( a5 c# B. R: h) m! ~5 U
  }4 a+ k7 V/ z+ I7 n- P0 S
   / i! i/ o4 p7 Y. J3 d
  }
5 e5 p. a0 X. B3 L$ P+ D1 A% U; Q8 v  //释放内存空间
# N+ b% D  t( h! _7 Y9 u  if (pIpAdapterInfo)
0 v! ?9 p, T: q* q6 y6 ~  {/ P. w0 S. M) d- T1 n/ L$ A
    delete pIpAdapterInfo;
1 K' b# R# P: U" [9 A7 O  }" d' R  T" o' \! I" _$ |* n+ o
  ! u5 e% Y# L  z, h
  return 0;
/ O/ k6 \& J3 O}& C. y7 _* ?5 m) y

8 }  z, \$ B5 x( R0 s2 b/ U% 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二次开发专题模块培训报名开始啦

    我知道了