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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>& S) E* U  }2 \! t; l
#include <Iphlpapi.h>
; H  w" B9 I% l& h, q8 @#include <iostream>
" O6 l. z& a) }& ^9 X+ x8 qusing namespace std;
; C/ J& ~- ~5 }1 [6 M#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库! k7 }( [6 m+ M! g8 X

% l  w5 K: f2 y. r4 Gint main(int argc, char* argv[])
& {8 e; ]. }3 {$ H- W1 P! h{
1 x# x8 @9 J5 s9 T- O& F  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息5 J" M, V# |) ^. z) ]& _1 {
  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();" [- q' j& R& {
  //得到结构体大小,用于GetAdaptersInfo参数  {9 V, t. ^( J- G/ S0 Z  B7 p
  unsigned long stSize = sizeof(IP_ADAPTER_INFO);: y7 n0 l8 U+ e4 M  s$ ]
  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
8 `7 w) `2 K9 R" ?" `  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
; E( \' Z7 ?% F' u8 c& d3 C  //记录网卡数量" y' [! E/ a) C, u
  int neTCardNum = 0;  C' s7 p2 |( G2 a+ g, ^/ P8 L
  //记录每张网卡上的IP地址数量) e# }# B" v) b: G* x
  int IPnumPerNetCard = 0;
  g0 ^, E! I5 t0 U' U* |7 k  if (ERROR_BUFFER_OVERFLOW == nRel)
9 V! Q' c8 Q8 W& D: ~+ W/ ~  {3 F! d  A8 C3 ^
    //如果函数返回的是ERROR_BUFFER_OVERFLOW" n' k2 m0 f4 v' E. n
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
$ m, F# c8 F$ c    //这也是说明为什么stSize既是一个输入量也是一个输出量
7 y. p5 e! a) s/ _    //释放原来的内存空间& q+ D- X/ \% y8 t2 @/ g
    delete pIpAdapterInfo;
& A( ], v; m; W2 j/ c) I" p    //重新申请内存空间用来存储所有网卡信息- v9 l- i0 g3 \( R' M5 R
    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
, c+ {( _3 N4 H+ t& R* S; U0 {    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
- Q' X% Z# r) o0 `% u    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  - e- F% S+ v( K( z. ?% S
  }# }) j2 ~, n8 {: g4 Q
  if (ERROR_SUCCESS == nRel)
7 G+ c5 \! m0 z  {
8 s! g; l' L# |, P) l    //输出网卡信息
* @: P1 l2 ^7 B5 L$ f2 W/ [" o     //可能有多网卡,因此通过循环去判断$ d$ b% h, c& @# I, f! p, q
  while (pIpAdapterInfo)
  l* z* x9 E% y2 L% i+ N7 ^  {
- s% r& B- M8 ^    cout<<"网卡数量:"<<++netCardNum<<endl;2 [6 V) Z# {1 S5 l5 ?+ c
    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
( B. z4 f- ^; u4 s1 r    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
1 Y$ T* \0 G: C: m2 e    switch(pIpAdapterInfo->Type)  h4 Y' S% s1 r8 P- {4 H) m
    {
: b. g0 l9 M' X9 B( |' r+ T8 ^. V5 L    case MIB_IF_TYPE_OTHER:
* D: J8 M5 A& L% x: e      cout<<"网卡类型:"<<"OTHER"<<endl;
( q& N# l/ N( J7 M& ?" ?      break;% B) z1 W% e7 a
    case MIB_IF_TYPE_ETHERNET:9 k( X' \7 ]# L& O9 Y; p7 y
      cout<<"网卡类型:"<<"ETHERNET"<<endl;
, D7 ]0 ~7 e/ Y1 u      break;6 i# \0 J; i2 e
    case MIB_IF_TYPE_TOKENRING:. i& S7 @# c: P
      cout<<"网卡类型:"<<"TOKENRING"<<endl;
9 ~  O6 n; d3 g: e. y; h  @1 n  w# G      break;
. h& ]  u+ V3 P8 C5 B    case MIB_IF_TYPE_FDDI:
6 |& V6 {6 C5 w: n' H      cout<<"网卡类型:"<<"FDDI"<<endl;" y7 p1 A8 R0 H8 {, }. t
      break;
0 Z8 t3 t4 y# z9 J3 x$ `2 R9 O    case MIB_IF_TYPE_PPP:
: U8 {. U2 U) W' {      printf("PP\n");% x' o$ f$ f- {7 y( q4 J2 B! E
      cout<<"网卡类型:"<<"PPP"<<endl;
: z! @1 B$ o* `8 \1 J' h* m      break;& G- w; Z8 J) o) O- H( ~
    case MIB_IF_TYPE_LOOPBACK:4 e. D" p- \! ?8 H( t! _
      cout<<"网卡类型:"<<"LOOPBACK"<<endl;' H4 Z2 f! M& V/ I
      break;
7 M( ]6 G' s. R9 M9 n* {    case MIB_IF_TYPE_SLIP:
. O# g- f! G, h; Q) O      cout<<"网卡类型:"<<"SLIP"<<endl;
0 L: ~' V1 ^# z$ m$ R      break;4 Y6 u7 u6 e0 M* b7 _4 P0 v0 ~' C
    default:. s5 a2 G# _. n. k
  F1 z; q# t# b! k+ }" W
      break;
3 y# @& u: q, Z7 h( p    }7 n- l! Z0 v2 ^6 Y: ~
    cout<<"网卡MAC地址:";5 {! L4 E, Z( u' x1 G
    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)
! f) F0 a' P6 c% x2 ^8 e      if (i < pIpAdapterInfo->AddressLength-1)( ?7 _0 u. k) P" t- j& |  ]1 ]! F
      {
$ ]3 h) ?* ?' v        printf("%02X-", pIpAdapterInfo->Address);
1 A: k+ ?9 l( N. x5 K      }
) M$ \' c! }* w' _      else, G8 E: c7 k3 N" e' U3 P* W
      {
/ D: S7 Y: o1 K( R: i6 I3 }        printf("%02X\n", pIpAdapterInfo->Address);
  p: @' L, _+ {      }
% m6 f% B- u6 Q$ G% Z, {6 W3 }  _      cout<<"网卡IP地址如下:"<<endl;$ p* H6 M1 w# M, }. A8 ]
      //可能网卡有多IP,因此通过循环去判断
7 P7 \! C" r* M* t; C) [% H      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
! z& r/ o! p) ]      do
$ k1 u# `- \0 E2 X/ i% X      {; v6 t/ Y# O% J! r
        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;
% O% S/ s8 m# H6 @        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;
2 X# s3 a' ?" _1 o5 j/ a        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;
8 E% c+ Z+ |4 p0 j. c6 h7 S% v7 x        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;
$ N! S1 N+ M6 e  `& v* A+ M  b+ X  E' G        pIpAddrString=pIpAddrString->Next;
. k* q+ R- f7 t) N, @      } while (pIpAddrString);7 e& X! s' b4 M( a
      pIpAdapterInfo = pIpAdapterInfo->Next;
7 j$ m! ^# q# }      cout<<"--------------------------------------------------------------------"<<endl;
5 W6 I* @: P% a( V  J' A$ g& k3 M  }
0 @* a" Q' D8 Q- \   
/ c. ~: a" [' |- G4 h4 t2 z  }% Y; z0 ~. Q6 a9 j# r7 ]5 O$ D
  //释放内存空间$ E. o: y4 N+ [/ W1 I
  if (pIpAdapterInfo)4 Q1 v4 b$ N- {. m* \: }7 w
  {9 r# O7 h& e7 C/ }. n4 ]
    delete pIpAdapterInfo;. E! q( E( N/ b% C, F/ A5 a+ y3 t
  }+ R* ]( t; d) d' s
  & S8 D0 k- n7 ]1 Z) H- O4 P
  return 0;, @9 B0 W7 \5 \+ z8 I4 I1 X
}
; S9 P( \. Q8 W) O8 j6 `! v, h2 p: Z3 L2 M+ p, a( K
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了