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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>3 v6 |) M4 ^7 D2 A+ d. @* b3 T
#include <Iphlpapi.h>
' k3 _7 ?2 k+ I1 d' T; [* a; I#include <iostream>
$ k+ d+ Q: \4 F  o* Qusing namespace std;
1 \0 C! L$ A) J1 c# `$ |/ l+ r8 Q. G#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库1 o2 K, T" q" {: p1 T
" [$ d# p5 f( d% V9 Q3 \/ ?
int main(int argc, char* argv[]); q, K6 f3 h4 E' B
{: e) g5 S) f/ R( ~+ W4 R) G- B
  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息
% C' l4 i  x2 r/ o0 M8 G6 E2 Y  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
" Q  {2 ~" U# o, K5 A  //得到结构体大小,用于GetAdaptersInfo参数- F8 A7 }- v% e) w% F# ^
  unsigned long stSize = sizeof(IP_ADAPTER_INFO);) g& F8 G" Z9 H  H4 j: w
  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量) s, P$ A# k8 I- J) {% `
  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
1 [  y  K3 n" @. o" [' E  //记录网卡数量
) g* O3 |4 ]& x9 P" e3 ~  int neTCardNum = 0;
( a7 R1 L3 T; h7 j' m1 j, k" @  //记录每张网卡上的IP地址数量6 e  `  P( F7 o$ Y- v& R5 G
  int IPnumPerNetCard = 0;( o6 c: G8 n+ K5 c  W& q0 I
  if (ERROR_BUFFER_OVERFLOW == nRel)5 a* {& h* \& K
  {
: t$ t7 b/ k. `' c0 g( \7 s    //如果函数返回的是ERROR_BUFFER_OVERFLOW2 ]+ ?3 S  u$ O/ M6 {' K
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
( Z7 v* P9 Q; A, _2 z1 E    //这也是说明为什么stSize既是一个输入量也是一个输出量6 C  ]& Y% q" _0 r: A" B. S
    //释放原来的内存空间
& [( F' x9 M  f! Q9 o+ C& D& K    delete pIpAdapterInfo;
2 [4 g; j) r0 B9 C5 Y4 {; {! K; {    //重新申请内存空间用来存储所有网卡信息
- X' u( c3 i8 b9 L    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
) w4 O* ]- [$ u& `9 E    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量4 g9 Y$ g1 ]; w
    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  % [9 z; ~' i% H/ Q
  }0 M! n& N) a8 K- m) ^% v
  if (ERROR_SUCCESS == nRel)/ w3 h1 {! [. X$ A; H( n
  {
, S. |( l, n- m    //输出网卡信息$ v; b$ q+ b3 B
     //可能有多网卡,因此通过循环去判断& b) D& N! V' b  w
  while (pIpAdapterInfo)5 p3 G+ c. _2 s9 I3 L0 |
  {
" D2 F$ O  t, r* d$ n3 G    cout<<"网卡数量:"<<++netCardNum<<endl;
  R- D: D5 v1 o3 j4 w2 m4 I( t    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
- n$ i$ {0 U  a* f8 @& ~. v    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
2 [, V, G+ m) J6 b    switch(pIpAdapterInfo->Type)
" |: t  S) }0 ?( u) Y& |6 K0 o* `+ [    {
* q7 t  r! |$ }9 H3 x! t5 Q    case MIB_IF_TYPE_OTHER:: Z1 b; G1 K* m% }
      cout<<"网卡类型:"<<"OTHER"<<endl;
8 @+ Q4 }( j- {3 W8 B* @. K      break;4 m. P0 ^  u) P, ~& @* f8 i
    case MIB_IF_TYPE_ETHERNET:
9 \1 x) l# Y$ k8 V6 L- s$ @6 b& U* P  P7 h      cout<<"网卡类型:"<<"ETHERNET"<<endl;, X/ d9 E" A3 [) n7 Y
      break;
4 R/ P" s7 f( t  S2 o    case MIB_IF_TYPE_TOKENRING:- R, p* |% J+ s! r/ X
      cout<<"网卡类型:"<<"TOKENRING"<<endl;, W" |6 m" d3 t5 k; S( W
      break;
6 s$ U' k; P! @3 @" z! r    case MIB_IF_TYPE_FDDI:
2 A: m4 t2 p: f; [8 X/ R. o      cout<<"网卡类型:"<<"FDDI"<<endl;
2 E0 I3 |& S$ s% i2 ?  s. F      break;4 `! J0 L- y1 g3 g3 \' z
    case MIB_IF_TYPE_PPP:& L7 j8 S' K- o, T& v# b
      printf("PP\n");
% g( z  o% r) E7 {/ I      cout<<"网卡类型:"<<"PPP"<<endl;8 p9 d( b- D9 O& ~5 K
      break;
- v# d3 c) c. ~8 N/ N    case MIB_IF_TYPE_LOOPBACK:, U9 m. N' X$ @1 Z+ Z
      cout<<"网卡类型:"<<"LOOPBACK"<<endl;
; C# _" x7 V1 g/ a1 c  V5 q( P      break;& G8 I$ d: v7 g
    case MIB_IF_TYPE_SLIP:
% J( t9 [5 _. G      cout<<"网卡类型:"<<"SLIP"<<endl;2 G$ o, Q( F" y
      break;( S# f! A+ f+ g- \) D+ c
    default:; F) N& Z4 v; U( m0 w

+ G8 V- E# B5 }' ^6 s! v      break;8 z& {: ~7 ]( o
    }: a  N  U3 B6 n. L2 w+ C4 _
    cout<<"网卡MAC地址:";- S7 d3 {* h+ d' _
    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++). q- n  b' F# b/ p
      if (i < pIpAdapterInfo->AddressLength-1)
+ ?% g1 {8 o3 i1 Z2 M      {( z7 r9 O8 J. t8 W
        printf("%02X-", pIpAdapterInfo->Address);9 W; n3 B8 V! ^' ]8 H( J
      }+ e8 ^$ x; Q0 E1 s5 {4 `
      else
4 d# t: x$ T. X0 J% M! O+ N- C      {
7 P5 ]% k0 v/ m7 O& Y        printf("%02X\n", pIpAdapterInfo->Address);
, l" \) K# s4 s      }" o" Y! w: ^3 i5 F0 k
      cout<<"网卡IP地址如下:"<<endl;
: V& c7 S$ f7 u4 e9 G7 U5 c( Y! o      //可能网卡有多IP,因此通过循环去判断
* }& a$ i+ c5 M1 O( B      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
* W, f6 i& X' V# N5 W% k! m      do8 M6 q7 G% n4 |7 ^; Q$ m
      {
- ?: i' v" G- U. I2 f/ ~! V, c+ u# J        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;$ a" F( v& f! H: F
        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;) U* A0 m1 f! Z8 ^4 [( @, x' h
        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;
% o, d' F) n- Q$ \# ]" |" I6 |# B        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;
* q7 k) O, p0 A, p  R        pIpAddrString=pIpAddrString->Next;6 `' W/ L, N' q7 A
      } while (pIpAddrString);
9 C4 }6 Z' R9 t, M      pIpAdapterInfo = pIpAdapterInfo->Next;, N9 q( C  Z- I8 _$ v, B. q
      cout<<"--------------------------------------------------------------------"<<endl;& }' E  B3 k' ]- a& J
  }
& @; ]3 x* p- z5 b3 X1 ~9 |& p   & T6 s4 q  a' f, Z( A1 ]
  }
. O9 g6 g: L6 R- E% ]! ~7 A  //释放内存空间7 m; i% b, Z3 X) Z$ J
  if (pIpAdapterInfo)
5 E3 p9 }9 R6 V7 }! B  {
( \, Q* k) y2 w6 a$ f1 @, k    delete pIpAdapterInfo;4 w! f) n. J: V6 ]
  }$ l5 A/ @" @1 |- R
  7 b1 U& q/ s. H, F- p) _7 |) ^
  return 0;
! O  a0 h1 e2 R/ a: [! T5 B}
0 ?5 Y2 P9 \& E
7 A0 A/ Q0 {& ^* @, [4 ~: e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了