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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>$ M5 w- w# T" I% _/ |' l& L
#include <Iphlpapi.h>+ c! E/ {! q0 L) B. h% b
#include <iostream>
. E8 q# R) A; M! D4 G. nusing namespace std;, A3 w' @6 E2 S: ]5 l* @
#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库# V7 B- ^. W2 q8 [) _& \2 C
$ R! J  A# ^' u# N6 y
int main(int argc, char* argv[])- K3 M0 X+ w" q1 H) n7 m: D* G$ l
{  D; w& A3 i! I
  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息* o5 i* x( \) W- s
  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();" {2 X5 o- `1 Z7 ?- Q* g' O
  //得到结构体大小,用于GetAdaptersInfo参数
% g( C; F  H  j% z9 Y  unsigned long stSize = sizeof(IP_ADAPTER_INFO);
  \7 r) [! g& f  X* l6 [  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
! X1 ^/ E, j& O& G1 ?( q( u  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
. v  A0 b& R/ `* d3 r  //记录网卡数量. v8 j# g# l. ^  Y+ b  s6 y
  int neTCardNum = 0;
" q. S" z0 c# ~$ \  //记录每张网卡上的IP地址数量! }% O; u, F0 p
  int IPnumPerNetCard = 0;
2 a# V5 N0 r2 N$ a" _+ i2 j4 O' M  if (ERROR_BUFFER_OVERFLOW == nRel)
  D6 ~" \9 N5 M1 X1 x7 i  {
6 d7 j/ V  ^% r/ `0 o' j    //如果函数返回的是ERROR_BUFFER_OVERFLOW
/ y  n+ ?$ L* z+ t9 S    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小, x9 _5 |7 N$ i4 E5 q
    //这也是说明为什么stSize既是一个输入量也是一个输出量4 E: X, L6 g5 u
    //释放原来的内存空间
2 H$ y; Z0 y, V" J* a    delete pIpAdapterInfo;% c3 d% Z6 v2 }1 O) @
    //重新申请内存空间用来存储所有网卡信息' O5 A0 R0 x1 T
    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];5 H+ \  R3 |7 z- h* F9 A9 [
    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
" b2 y" M5 `2 E) C/ U- m    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  6 c3 F, m1 X1 D6 s9 a% [
  }4 W) E% L! s' |: H" s
  if (ERROR_SUCCESS == nRel)  n- \/ Z" X6 E! j0 n8 I
  {* n7 P! _* T. G
    //输出网卡信息+ k3 Q9 v9 b3 ?4 Z$ N
     //可能有多网卡,因此通过循环去判断4 o" I$ _# k& W% M- B1 y, \, p6 q
  while (pIpAdapterInfo)
2 V1 ?0 m2 U% d; q, Q; ^8 c  {: ?; G) b7 M3 m2 r8 a
    cout<<"网卡数量:"<<++netCardNum<<endl;4 ~3 G9 ~( G; g% y1 e
    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
1 {' F) i& i) f' i% ]; \    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;* k5 Z' D& @" m0 t+ J  \  x
    switch(pIpAdapterInfo->Type)& G+ G5 {$ P, h9 C9 u/ t: h$ B
    {- K# G2 ]9 h1 L) d' Z
    case MIB_IF_TYPE_OTHER:# G( A) T' N$ H3 P0 ]# p: F( u
      cout<<"网卡类型:"<<"OTHER"<<endl;# E3 ^/ w2 T) X/ o
      break;/ G4 t9 i/ H. u! n1 P2 @- ~
    case MIB_IF_TYPE_ETHERNET:
. P  v. t5 A; J/ v/ ^+ y      cout<<"网卡类型:"<<"ETHERNET"<<endl;) f9 g7 {* Y9 I
      break;
) t3 L0 l! a4 H$ @2 b1 t/ T    case MIB_IF_TYPE_TOKENRING:
" P. R: G8 x3 z1 {      cout<<"网卡类型:"<<"TOKENRING"<<endl;
1 z. g5 I) n* O5 O5 t      break;( g2 [; l" J1 |6 y5 S
    case MIB_IF_TYPE_FDDI:# e$ i. A) Y/ N( t7 V
      cout<<"网卡类型:"<<"FDDI"<<endl;4 m$ v' L3 t1 y& F; M# t; Z" [+ c/ }
      break;
$ A7 Q" @5 Q$ _  m    case MIB_IF_TYPE_PPP:
( T& n$ O- i! k# b( v  W      printf("PP\n");
5 y- _7 l' a8 N, J      cout<<"网卡类型:"<<"PPP"<<endl;
, }3 K. E- m! b$ J- ^9 f: W$ \+ a      break;( h$ y1 a' y/ o* t7 n$ c
    case MIB_IF_TYPE_LOOPBACK:$ I! o6 t4 L' t
      cout<<"网卡类型:"<<"LOOPBACK"<<endl;$ X9 t/ h, U- q/ _# t9 A' a
      break;4 ?1 w; |* I# `/ }
    case MIB_IF_TYPE_SLIP:
5 y9 s% X& c% H, A/ S      cout<<"网卡类型:"<<"SLIP"<<endl;
; J( K& b3 @! @! ~+ P+ H0 ~# f3 k      break;5 h- b; L. V* D; `6 L
    default:
* f. x7 m" D- k% v3 C3 K2 O: Q8 c- w2 x
      break;
- z* Q6 X. t3 X  N+ l    }6 N* u% B1 P; M: |' a$ [
    cout<<"网卡MAC地址:";2 y  k8 z% R& Y, v$ y' p
    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)
& N7 G  D% U. P1 s$ C, `      if (i < pIpAdapterInfo->AddressLength-1)3 T+ Z5 ~0 e1 E& G, I
      {
* ^0 A' I/ e* t        printf("%02X-", pIpAdapterInfo->Address);
( ]7 s/ {7 Y0 J, f& Y7 H- u      }5 L1 b- [2 }. N
      else
& l2 i1 N5 t" h; c. `! I      {
( C! m4 o8 c6 W9 B) E& }        printf("%02X\n", pIpAdapterInfo->Address);
4 b0 i/ y: |3 T, d  [8 J( d4 y4 q      }' X& m. m; h% t
      cout<<"网卡IP地址如下:"<<endl;
) ^" g; `, [% x5 M$ E      //可能网卡有多IP,因此通过循环去判断4 o5 d. y" b- J: Q
      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);9 ]8 C9 n4 Y$ O' U6 R8 ~: F) D( J
      do
8 B, U5 D( y3 n! d      {
' w; J4 r+ A: R8 G        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;' ~5 p4 w8 ]. W
        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;
1 ?/ x# `/ @5 R( F        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;
7 M. x" ^* G) I        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;. I" ~! l7 ?, e: d5 N. I- W! Y1 d
        pIpAddrString=pIpAddrString->Next;9 O7 e" N" A6 N  J
      } while (pIpAddrString);" N- {$ o2 u2 L+ b: [4 t
      pIpAdapterInfo = pIpAdapterInfo->Next;
2 s+ C8 c& e0 U  X9 v2 v      cout<<"--------------------------------------------------------------------"<<endl;
# p( k% g  r0 m1 O  }
& y4 c, e. [: ~9 x" K! k9 _) Z   ; Q( O8 |/ D6 I
  }" }( v. n$ h$ j+ A
  //释放内存空间% j# F; T# ]0 B5 a( K3 E% X' M3 {, E
  if (pIpAdapterInfo)
1 x* s% @- e- `1 c  {: @. Q+ o: A# G, J, a* T
    delete pIpAdapterInfo;
, h2 ]% b  P/ W/ U  }4 J0 c# K/ B' A9 M& ~5 X, p
  
9 W' k) b1 |$ v  return 0;
$ x; h% z9 b3 j/ P}
( W, H! d0 }! k' u& J% Y: [* v! P9 S5 n/ W% c: W# B
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了