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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>% D/ {' R; I) d1 u- z1 p' W8 q' T
#include <Iphlpapi.h>
' w- o. b5 ?# J' p) y  H# I#include <iostream>( u8 z2 S5 v3 ~# _1 l! b6 m
using namespace std;
1 D: B3 l* q- P( B#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库* _( Y" t: n0 o( s

: O2 y7 K( D/ x9 \2 vint main(int argc, char* argv[])
6 E; W" N! N4 J0 n- K{
& I; Q- y( s9 X  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息  S. L2 o7 i- F0 |, \
  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();) t6 ]2 U% v7 r! B6 G4 b, O, G7 V
  //得到结构体大小,用于GetAdaptersInfo参数7 A$ j* s3 d  T" m) E
  unsigned long stSize = sizeof(IP_ADAPTER_INFO);2 T& e. r6 V3 d7 y
  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量0 k2 a( w  w: M
  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
6 m& b2 U! u" k# P. `4 o/ a  //记录网卡数量
8 |$ ]: `$ z2 E9 {, S& |% U0 V  int neTCardNum = 0;
, O( [4 k" L3 ^  //记录每张网卡上的IP地址数量/ i5 Y2 T" w' M0 j, X
  int IPnumPerNetCard = 0;
8 u& R7 A& y7 f3 d* r3 i  if (ERROR_BUFFER_OVERFLOW == nRel)" X3 l! |  ]0 @  C/ `
  {
4 y7 o2 w. V/ h    //如果函数返回的是ERROR_BUFFER_OVERFLOW
7 P7 o4 u( u$ b$ J7 B3 i; D6 {    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
/ ]2 I! z0 R( F  |- j# j    //这也是说明为什么stSize既是一个输入量也是一个输出量/ G2 A# V: f3 G& _2 G" Y5 c
    //释放原来的内存空间
9 m0 S# d0 E. x; J. Z. O    delete pIpAdapterInfo;% ?8 ~! x4 l/ S% h9 r- d( M5 R* r
    //重新申请内存空间用来存储所有网卡信息& u3 z$ S' r9 b2 y: g
    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];! P9 d5 K6 n* J6 @) f1 l/ `
    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量, a1 H6 o; A8 S0 |2 C4 E; |- H
    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  
6 ?3 S" ~- E& v' U  }, i$ p4 ~2 n( x2 ~# Y
  if (ERROR_SUCCESS == nRel)' Z% t0 p$ t, o6 }' w& }1 s6 c
  {( L7 M" q& ^* j3 n2 {% g  S* D
    //输出网卡信息8 P% _0 D3 x- X( r6 [/ |
     //可能有多网卡,因此通过循环去判断
( p4 Y. Q5 E  d# [% U  while (pIpAdapterInfo). `: @- P$ S: h: i
  {) M1 ~% Z: Q% h
    cout<<"网卡数量:"<<++netCardNum<<endl;
0 v# e0 _. _: y    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;( e0 z- _8 K* n$ f
    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
" I) w2 v% T4 M1 W4 G    switch(pIpAdapterInfo->Type)
% e/ h6 J4 l/ I! o% c$ N+ H; Z' o    {! u+ h, o9 ]. H* a2 p" y9 z; ?
    case MIB_IF_TYPE_OTHER:8 h' I$ ~0 ?# @  P
      cout<<"网卡类型:"<<"OTHER"<<endl;
) {% _. @, M& e+ E5 u7 c      break;
! i3 x* z0 V5 t: W! O    case MIB_IF_TYPE_ETHERNET:: I3 e+ G, \; r  a, R$ I
      cout<<"网卡类型:"<<"ETHERNET"<<endl;
% p  v( u$ ~" }, _3 Z) X      break;6 G; t6 |2 U( v9 I) I" \
    case MIB_IF_TYPE_TOKENRING:7 h/ O3 S) S( R+ Y
      cout<<"网卡类型:"<<"TOKENRING"<<endl;" H: Z$ j$ B1 V& _4 H
      break;
, N% T% G% e1 ^# }9 T    case MIB_IF_TYPE_FDDI:
( f" w2 O8 s+ {      cout<<"网卡类型:"<<"FDDI"<<endl;
: l' U+ R$ T; n# g3 W+ m      break;
: `% h. o( J3 H6 O    case MIB_IF_TYPE_PPP:
% u. J/ ?. [( r6 {1 h7 g      printf("PP\n");
$ s9 y% Z( g: X) W+ K6 ?4 g' X# s      cout<<"网卡类型:"<<"PPP"<<endl;6 A% l) x7 N& w9 Q( }3 f! r, o1 c
      break;$ L9 {  V( e( _& z+ V9 S9 i1 ]
    case MIB_IF_TYPE_LOOPBACK:
" H4 [) Q9 Y5 f* N' R* Q      cout<<"网卡类型:"<<"LOOPBACK"<<endl;  p- t2 K8 C, i  ]- R. \
      break;
4 `* A; g* t4 L- c    case MIB_IF_TYPE_SLIP:1 ~2 a" P" R3 p7 m5 x; j
      cout<<"网卡类型:"<<"SLIP"<<endl;8 _( I, j& F& ^
      break;$ x1 S6 U2 @. x6 q/ |0 d
    default:
* k9 e7 {. K1 j
. A/ {3 V& N, J- ~      break;
# A  _" L+ I# V# O. E/ M4 Q% d% H    }
! @4 v1 M% y! N& r; V, t    cout<<"网卡MAC地址:";
+ ?! N$ [- \  \4 Z* `5 R    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)
; U4 t; |/ |( W7 o  Y+ k      if (i < pIpAdapterInfo->AddressLength-1)
! `* k% s) Y. h/ q0 K3 ~) g- n      {
0 f5 R$ }$ W0 i& R4 Y$ S6 _$ d: v        printf("%02X-", pIpAdapterInfo->Address);: ^( y* T* t, J, Q% c/ i3 q1 B
      }% b% G+ [! e* {8 I) E( v
      else8 A, h# P6 J" j3 H: v7 N
      {$ t2 n2 G% k! u( a' s$ l1 H; v
        printf("%02X\n", pIpAdapterInfo->Address);
' }* v  w, S" _      }
6 o# W. F- b( p      cout<<"网卡IP地址如下:"<<endl;
- c* c5 |2 T+ {% w8 R      //可能网卡有多IP,因此通过循环去判断( |; S% P2 L- [6 i  T' G8 p# M) s& P
      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
  y4 I( H! v% n+ d  w$ s+ u& m      do" M  ^2 m. B" W; z! P3 |1 z+ D
      {- F; _, S, G6 G$ Q1 W8 [5 n% }4 v
        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;7 P1 B3 \2 L& U4 m
        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;
8 J% g+ i1 n2 p+ W& X5 h$ S        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;
5 t7 |0 _3 n7 L; z4 x# G        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;9 M5 l: R- ~1 B
        pIpAddrString=pIpAddrString->Next;
" W5 ^# _+ }$ p" G4 x      } while (pIpAddrString);
: a9 T9 O; p0 I" |5 C      pIpAdapterInfo = pIpAdapterInfo->Next;7 k; _. s& U9 ?. G
      cout<<"--------------------------------------------------------------------"<<endl;
4 ~- Q! t8 r$ p* X6 l- ?  }
4 O( r0 B' R5 S  g1 U) A( y   % h3 O5 ~. h5 w9 ^  f
  }1 \, C; T% D, \3 Y) c
  //释放内存空间: x6 i6 l( }' f& u6 Q  t/ x( O
  if (pIpAdapterInfo)
( Q4 m8 i6 @6 @2 a5 m  y  {
$ m  `5 z" `. |% b6 \% S    delete pIpAdapterInfo;; o4 K/ Y; o4 S/ s2 B: r
  }
+ ~( u0 B$ V" u  ; e: a) {; g, x3 Q9 S5 D. y) v
  return 0;- t( C+ z& |9 O+ N9 q7 c
}1 ], j' I6 W+ y' T3 K3 L. F. C8 f/ t

( c- j$ F, O7 i9 |9 p# R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了