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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>5 M' J1 m  K& @4 l" ]3 H7 b
#include <Iphlpapi.h>
3 L7 E7 z6 j" ]6 R5 k5 R#include <iostream>
& t- I1 {. `8 \" Susing namespace std;
3 l! a+ `1 e) t6 j#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库
+ |1 q7 A2 r+ M# _( @! I; Q7 g
8 p" ~. W# V0 xint main(int argc, char* argv[])2 w6 ^" W8 ?3 F, d6 [* K; ]$ w2 ^! M
{
; p" f* z1 e" b( v$ N9 D  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息
" b# R9 B# e1 p+ `% G' _# @  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
$ r. m: T# i3 ~0 ?  A' \8 e5 {  //得到结构体大小,用于GetAdaptersInfo参数
) R3 g1 H3 X7 @6 q8 f  unsigned long stSize = sizeof(IP_ADAPTER_INFO);& s* ?7 @9 w3 u- W" k$ {+ G0 j
  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量$ p9 E0 B1 O. |
  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);4 T! B! r. Q8 D8 b0 h: X
  //记录网卡数量
( P! I0 h6 }) z) Z/ s/ ], D  int neTCardNum = 0;
; Z5 L; Z  Z- w  //记录每张网卡上的IP地址数量
4 u# G" b3 I5 s0 z% L9 J  int IPnumPerNetCard = 0;
4 v9 L. X. w, F$ ~: O" J2 l  if (ERROR_BUFFER_OVERFLOW == nRel)6 Q4 I0 d2 Y/ z$ n
  {
7 {! y' c% L" t. ~4 b    //如果函数返回的是ERROR_BUFFER_OVERFLOW
8 }( M' h2 e/ t    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小3 W. W& b, e2 A8 T) h) N. x
    //这也是说明为什么stSize既是一个输入量也是一个输出量$ i* ^* A6 g* r6 W
    //释放原来的内存空间
3 b. Z4 t4 E( N  S6 L$ R5 M( q    delete pIpAdapterInfo;9 Q! @. `* c3 @  u
    //重新申请内存空间用来存储所有网卡信息
) w" A: R4 H8 V+ \. \5 ~. a) B    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
; R0 S- z) f! f3 N    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量% F/ w" O( t0 @9 T1 K
    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  
1 D6 ^2 ~+ y3 v# p' h% S, h  }4 ]2 F% H1 A" H! w5 K' Q
  if (ERROR_SUCCESS == nRel)
- Y' O2 \% v( H5 b, g1 k  {
$ @8 h7 I3 l% E# V    //输出网卡信息3 J5 j% s* {5 |/ O3 m9 b
     //可能有多网卡,因此通过循环去判断
# U) E' |& Y+ b2 d  while (pIpAdapterInfo)
8 o8 P+ A1 e. t5 m- i9 d# h  {. H9 w5 D7 c0 `3 V% B9 |
    cout<<"网卡数量:"<<++netCardNum<<endl;/ j# D7 i% J" @/ ^: d$ F# G6 M
    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
, s% \- E7 ]% G) N9 T    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;' Y- ~  q7 m4 ?$ |# B4 \9 z* L
    switch(pIpAdapterInfo->Type)
/ o. W. a3 [2 v( D* h; B    {2 A' V5 @! i4 D, |
    case MIB_IF_TYPE_OTHER:# `5 G# i: {% I) M
      cout<<"网卡类型:"<<"OTHER"<<endl;; G2 y4 Z/ b# f7 S( P
      break;
+ J' G5 Z1 ?, U6 G; g) d/ e    case MIB_IF_TYPE_ETHERNET:
( m1 R3 c. u, v) r( d      cout<<"网卡类型:"<<"ETHERNET"<<endl;2 k; c2 y) T7 ]
      break;
3 X5 C8 z! j6 a8 Q- J    case MIB_IF_TYPE_TOKENRING:5 t; Y; L" B1 G/ Y
      cout<<"网卡类型:"<<"TOKENRING"<<endl;: d; _! Z2 M2 J+ }6 B: G2 g
      break;7 _# l4 R5 V& b1 H
    case MIB_IF_TYPE_FDDI:
; I6 T& ?4 h1 J! C      cout<<"网卡类型:"<<"FDDI"<<endl;
, ?: L' |- M/ ?+ H" I7 S      break;% ~" y3 f6 Q8 B- T  {
    case MIB_IF_TYPE_PPP:
- C) L8 T/ d: n: M      printf("PP\n");
5 T- w4 j6 Z" s9 q0 [      cout<<"网卡类型:"<<"PPP"<<endl;
1 X7 t  A/ S4 n: C$ s, L      break;8 r( o( w" A5 X% w( s
    case MIB_IF_TYPE_LOOPBACK:+ K" W( B8 s/ E. }* N
      cout<<"网卡类型:"<<"LOOPBACK"<<endl;
6 Y# D2 @) x! s1 R+ w3 \      break;% _# l. `- P; i) l; p, @3 b
    case MIB_IF_TYPE_SLIP:9 ]% n( c" Y% Y  T/ x) R3 S
      cout<<"网卡类型:"<<"SLIP"<<endl;* \( R% R! m: i/ r0 v
      break;
+ v' V5 p' `7 F" q# D    default:
) J% {; \# ~5 k2 j, W6 A/ J% Y
9 y3 e) e6 ~0 Z7 A      break;
6 G9 d: M; o8 }+ d- E$ J# |+ s; O) y    }7 e7 ~- ^- }2 J, n9 W
    cout<<"网卡MAC地址:";
" L- I3 v/ H$ X    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)
. r$ ?1 Z( K4 n& V& L2 w      if (i < pIpAdapterInfo->AddressLength-1)
% V1 L  K$ x) [* k4 K0 d# {      {
1 G6 [0 E1 a, _- M        printf("%02X-", pIpAdapterInfo->Address);$ l2 ]+ S0 N6 j8 e' ]
      }
& L8 p* T- n$ ^8 ]4 j      else' O  K" q, }( p! @2 J
      {( ~1 ~! u8 Y: W1 s% v* ]
        printf("%02X\n", pIpAdapterInfo->Address);
+ t1 u- R$ L: N      }
4 y3 W+ T7 K. ~; @- H( s! {      cout<<"网卡IP地址如下:"<<endl;0 t4 `) c7 w& q5 I, h! L! U/ e
      //可能网卡有多IP,因此通过循环去判断
1 V1 J1 y4 Z8 k3 b2 n; I      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);. i; l# l9 X! q$ F* C
      do, d" u% Z& q6 |1 j$ g/ B8 H) a9 @. T( c
      {
. O# K9 F& G" q: M' {        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;1 L8 H1 X: u. R/ c$ {+ N& D
        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;/ U! ?; |4 @: l; x# j# r$ }: }( q
        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;+ k' B4 N0 U. y) j: N4 D
        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;  X, R+ j+ v( n! I
        pIpAddrString=pIpAddrString->Next;
, R2 T4 h9 ~$ l( e4 d& }- B      } while (pIpAddrString);1 ^! ^$ H+ {4 E& ?: x" }
      pIpAdapterInfo = pIpAdapterInfo->Next;, r: D6 ]( v# V; F7 \/ c
      cout<<"--------------------------------------------------------------------"<<endl;
% M+ p: z' n4 m5 z, \+ @5 |7 d1 q/ X  }" q8 J( x5 ]1 r% L
   
' [, j* ]9 ?; P7 u$ t  }: Q6 N( y. _- O: ]+ f/ F
  //释放内存空间1 a: e4 M  z; X. q3 p+ g/ f
  if (pIpAdapterInfo)
+ [8 |6 h8 L  t+ N: ?6 @  {+ r- {' M: q0 T
    delete pIpAdapterInfo;! ~8 m! U# i2 s3 P! y" K+ ~
  }
* t( H0 A6 V) i* U  
8 p8 S$ k6 E% V% I/ J  return 0;
! c5 s* l) V7 S  s}0 N( N; ~! Q1 D& h& Z4 }5 d

; l3 i* r* w, E" @' B' r7 H
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了