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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>7 e( ~3 K: H, _1 G. `3 P: r
#include <Iphlpapi.h>+ ]$ ^( r, L+ M  h6 w- ~
#include <iostream>
2 A$ J1 y& m# V" F+ j5 V% Zusing namespace std;
  d0 M0 w$ u7 P9 g7 L#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库7 I4 D6 w2 \, s! ^! O

& k( L1 }* R& |' u' L  Cint main(int argc, char* argv[])
) ]1 N; S) N7 \{
$ ^) P* ?$ H$ c* D" j  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息( Z- h' F" s& h# v6 {
  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();" N# N% ]6 S/ g5 e) e
  //得到结构体大小,用于GetAdaptersInfo参数
% _6 q5 y5 w8 O7 r  unsigned long stSize = sizeof(IP_ADAPTER_INFO);
( T6 O, J8 D& P4 t+ l8 U  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量6 n5 k4 L7 r) b
  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);: Z3 k1 @4 Q3 R# z
  //记录网卡数量
- D) \7 x3 F. n# G4 b1 ~  int neTCardNum = 0;# V; C3 B5 g7 X' ~
  //记录每张网卡上的IP地址数量
0 T# Y9 A( [+ R- _8 b3 ^$ h1 D  int IPnumPerNetCard = 0;/ H8 g6 {- E1 x5 x% w7 q
  if (ERROR_BUFFER_OVERFLOW == nRel)
- |$ @) B9 E  ?2 S( J; W) ^  h  {
1 O# H' M4 Y+ I8 A" m    //如果函数返回的是ERROR_BUFFER_OVERFLOW
) b; G, `4 w6 p+ a2 ]& Y, a: M    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
# h5 c" |8 _& J1 o    //这也是说明为什么stSize既是一个输入量也是一个输出量, e. h8 ^) \  }
    //释放原来的内存空间
# _/ f0 n- D+ |0 ~1 P1 j    delete pIpAdapterInfo;1 O  c; P) a! c! [
    //重新申请内存空间用来存储所有网卡信息
; \: m/ W# G" }    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
2 `4 F2 r2 [0 \8 |. U    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量! @2 z9 }* {: P  [; s
    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  & Q- B2 @& }' ]% U' y: a
  }' I. a# g0 R+ g( b, B" }( F, X/ m  U
  if (ERROR_SUCCESS == nRel)
0 T/ K, `* q/ G+ o  {
) J6 v! ~6 l& p    //输出网卡信息
! y0 K9 l" R* Q' W" ]: b) G& a% i     //可能有多网卡,因此通过循环去判断
8 ]1 P! }/ N- r  while (pIpAdapterInfo): ], F5 g: L' `8 a4 \! P. ^
  {% L. f: C( o% j! }. q" w
    cout<<"网卡数量:"<<++netCardNum<<endl;
4 h* f5 B- e8 k. h! ]2 u9 [: v" A    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;/ N4 p- _' [: T( L0 j  Z. X
    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;3 O4 @4 c3 ~. g+ k( M
    switch(pIpAdapterInfo->Type)/ f3 d1 K4 M5 o" O
    {! K0 i6 K8 M7 h, X# o
    case MIB_IF_TYPE_OTHER:8 L) y% ^6 |, Z3 d6 [5 {) a
      cout<<"网卡类型:"<<"OTHER"<<endl;( I% [# k9 [$ }: j. O4 w) B6 U. Z
      break;. i! c8 f9 t7 B
    case MIB_IF_TYPE_ETHERNET:* x8 K1 c# x; C, ~( V' n, K7 h
      cout<<"网卡类型:"<<"ETHERNET"<<endl;' G- c' O2 a. Q3 u4 H
      break;
4 W4 x. F4 g4 M3 I$ [& \+ h. ~    case MIB_IF_TYPE_TOKENRING:8 |& l/ m/ w* L& W0 {, Q
      cout<<"网卡类型:"<<"TOKENRING"<<endl;1 |" h6 C7 ?6 ^9 s! h( v. {
      break;- C% g3 s# |$ v7 [! W
    case MIB_IF_TYPE_FDDI:0 Y& w- u3 h! p  g) b8 W
      cout<<"网卡类型:"<<"FDDI"<<endl;; V  M& s' t+ E- N! H0 e$ {) G
      break;
" b, I/ Q2 z' T" y# j, I* U    case MIB_IF_TYPE_PPP:# O6 |! f/ Z; p8 O
      printf("PP\n");
& C! {3 j8 f1 _4 i. R      cout<<"网卡类型:"<<"PPP"<<endl;
0 t3 U7 q- c5 j, ~4 Z      break;: t6 \/ C4 n8 G) Z( ^$ U
    case MIB_IF_TYPE_LOOPBACK:  W$ S  {8 P3 u* I4 W
      cout<<"网卡类型:"<<"LOOPBACK"<<endl;
- ~3 ]- ~, P5 _: L. n      break;
# |, @' {, n" t( x/ [* X0 p) h) h    case MIB_IF_TYPE_SLIP:
' ?  d- C0 l& k      cout<<"网卡类型:"<<"SLIP"<<endl;
2 M* [2 L8 E7 x6 _      break;
2 r% ~" z: X9 j& m% u9 g    default:6 `5 X2 P; c- A9 Z  \

7 `  e: s$ j4 X( `      break;( h% Z, ~, s( l9 F( K* {
    }" S+ Q' E2 m, j, O3 D' j4 k
    cout<<"网卡MAC地址:";7 d1 a1 Z9 I5 @, B; v: Q7 {5 _
    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)) B  ]/ O; F$ z1 w# l- l+ z- |0 f
      if (i < pIpAdapterInfo->AddressLength-1)0 K8 H# l" @1 d  W
      {
1 I* X  {+ [7 s2 ~7 ?5 S% a        printf("%02X-", pIpAdapterInfo->Address);# M+ U8 E8 `5 R2 x
      }
, M: w5 r. w% Y8 B5 i      else( ^* U  U; Q% Y' l( T2 z# q3 {, [
      {2 Z! b7 [0 j& l( p7 O  l
        printf("%02X\n", pIpAdapterInfo->Address);3 @! n1 d+ c/ J6 R+ Q/ @
      }
1 {( g! o' e) t# ]4 D! Y' w2 c% E      cout<<"网卡IP地址如下:"<<endl;
4 g* I) Q0 z) M5 o  I0 R      //可能网卡有多IP,因此通过循环去判断
) o  |3 k" e6 {" m8 }; V. b" N      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
" J$ N' f6 y% a4 t      do' X* g' ?9 x5 ~3 a: f/ O3 i; ]
      {
) P! S6 Y+ x* o) X! }        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;
1 T6 C6 M6 \: v4 I$ j4 ^5 s        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;
% d+ T* }/ j, p) b4 j' y8 Y        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;
" K& ~- d" ?3 C7 {9 W  B        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;: F. n: W8 S/ r) N5 F
        pIpAddrString=pIpAddrString->Next;! s% U! ~7 m  a0 M9 g8 y1 L
      } while (pIpAddrString);+ N! H/ {  E& z: Y1 Z+ Q
      pIpAdapterInfo = pIpAdapterInfo->Next;
8 K( m2 r  f' c" h/ C' f! P$ b% k      cout<<"--------------------------------------------------------------------"<<endl;
. B5 |6 N( r& ~8 y  }) i9 P$ z# D, k* u+ P. `6 |5 P
   ! S2 \. H* @/ e2 @( i' c* {8 u/ D  t
  }' c& K1 y6 k9 J$ i
  //释放内存空间
" a) S5 s4 F5 t  if (pIpAdapterInfo)
/ O, G. `2 `3 y& K, u+ x  {
/ A7 c8 v% F; c8 q) ?6 q    delete pIpAdapterInfo;
/ [# h' F9 R9 l2 y  }% t% ]* y2 P# W2 e/ Z0 \; W/ r3 d
  ; z; \- W% x1 L
  return 0;
5 z4 d/ p$ u$ Q  A# D; |& [}+ u7 ^9 Z0 @8 a; X, m
7 ^. a. K, j" u6 v$ N3 O$ ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了