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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>
% S' M# e3 D1 g1 K6 g#include <Iphlpapi.h>- R2 Y6 O8 w! |1 }& Q, K: g* L* I
#include <iostream>
3 S$ G6 l% e9 V7 j! @; _using namespace std;, u, P  y$ w3 f% q" [
#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库, g& ^, e: S! L5 y' D
. T# e! W$ n4 [- ]) B, k
int main(int argc, char* argv[])
4 M. _5 L4 z- N) A{% w5 ^) ^  K6 e$ Y: U0 P4 N
  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息
: x3 x$ k. n+ d) n9 \8 K  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
; v: D: @6 u: S7 ^- m  //得到结构体大小,用于GetAdaptersInfo参数- H* \; B1 C9 v" C) j, c! w+ d
  unsigned long stSize = sizeof(IP_ADAPTER_INFO);
+ N# b4 }% p) U- Y# R6 s" H8 O% M  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
3 {1 F  H- e* I  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);' u- F) N: V8 i, b
  //记录网卡数量  v6 H5 v% n6 `" _( k( J) d
  int neTCardNum = 0;
/ I2 j0 v" Z5 y6 a+ |  //记录每张网卡上的IP地址数量
: @8 h# }3 @$ o7 I8 C3 d& W  int IPnumPerNetCard = 0;; J& c  q! Q6 [5 ^! p  t/ y
  if (ERROR_BUFFER_OVERFLOW == nRel)' ^( B  T8 M5 C
  {
1 i( v9 {) M# n3 m' e, Q4 I    //如果函数返回的是ERROR_BUFFER_OVERFLOW
5 f5 R: O7 [: x' }8 T    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
1 L9 K9 b( `$ B" b    //这也是说明为什么stSize既是一个输入量也是一个输出量! w. Z( K3 T7 Z! i
    //释放原来的内存空间0 T/ L& i7 v. j) V' r5 S, ^& \
    delete pIpAdapterInfo;4 D4 |  M; y4 \
    //重新申请内存空间用来存储所有网卡信息' E2 A" |" {8 |- F; \& D
    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
. f3 {: Y. H. A1 t7 u    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
) a" q4 A6 X" A8 D7 F. ?    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  * q7 x- X; z. X' ~7 n4 j$ G1 k' c1 ]
  }" ^. l6 D4 z. P' q" Z
  if (ERROR_SUCCESS == nRel)' X  e, @7 g$ a( {
  {
% y( n2 j+ u: e  a& Z    //输出网卡信息
, T! \0 g) }2 K     //可能有多网卡,因此通过循环去判断% J. s3 n4 i  ?( j* I
  while (pIpAdapterInfo)
+ L- K2 s0 G& f6 R+ c  {
" ^) I/ q' k# v$ j    cout<<"网卡数量:"<<++netCardNum<<endl;
, M! H% U4 X6 b0 ~/ H    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;, _: t. H0 Q2 l3 F
    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;$ U/ U$ x( k6 t2 X, Z0 ]
    switch(pIpAdapterInfo->Type)9 k0 B/ ?, o" X$ Y5 D
    {
& e2 Z8 J- g5 B7 Y    case MIB_IF_TYPE_OTHER:
' i# f0 ]! T+ l& Y7 H$ ~3 H* E  [# G! t      cout<<"网卡类型:"<<"OTHER"<<endl;
& J; y4 f6 m7 y1 Y- H/ \7 a      break;9 T" \% s4 I6 Q
    case MIB_IF_TYPE_ETHERNET:7 r' F/ m# M, q* J- F: ]" u# c
      cout<<"网卡类型:"<<"ETHERNET"<<endl;3 z5 R) h& ?. ?2 y& w
      break;; R* z3 F/ s  G7 J- H* ]
    case MIB_IF_TYPE_TOKENRING:
( M6 E% t- x7 Y# b      cout<<"网卡类型:"<<"TOKENRING"<<endl;
  I5 q$ {0 m, r' Z# {      break;
- S4 v2 R( g( p& u" ^3 \! b    case MIB_IF_TYPE_FDDI:8 g3 P" M" K, g# m3 Q4 h
      cout<<"网卡类型:"<<"FDDI"<<endl;
1 P5 @& T3 \" H      break;' ]/ [2 w; L/ E. |# ?( Y
    case MIB_IF_TYPE_PPP:; Q8 R$ c& X! x* T: E) d0 @
      printf("PP\n");
% Z6 _' E9 v! ]: o# M      cout<<"网卡类型:"<<"PPP"<<endl;4 R7 j  D* n$ ^" z0 U0 V
      break;
0 t% q! @) g. M    case MIB_IF_TYPE_LOOPBACK:
2 @' J1 l1 X/ k' R3 ?/ n      cout<<"网卡类型:"<<"LOOPBACK"<<endl;
. `* d3 y2 ~, m  ?0 j* G      break;' s3 X( d" t* _/ U
    case MIB_IF_TYPE_SLIP:
0 R: A, Y- @# I7 F      cout<<"网卡类型:"<<"SLIP"<<endl;1 l8 N& H$ T' Y8 p
      break;; f6 d0 V4 f; Y. v3 Y, n
    default:
4 W/ A0 v! d& [+ d' y5 _2 R) W
$ T9 Q8 c" Q2 G4 `( V      break;: X. O: V& {+ S! O( _" M: R0 A- n
    }
+ q2 B' ~4 c8 W* u$ _* u    cout<<"网卡MAC地址:";
2 x0 w/ [) l3 o" G1 u% t    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)
" w: T9 A3 j' a+ c      if (i < pIpAdapterInfo->AddressLength-1)
. P& \9 ]5 B/ t      {. P: r9 T2 @5 n( ]9 i
        printf("%02X-", pIpAdapterInfo->Address);
% Q& a8 V; O; }% x+ G/ t! O      }/ x9 }4 T" {+ y, {1 M7 o
      else
" V/ c, d( A' w" W      {
4 a% }, V1 m. Y% q) t: V        printf("%02X\n", pIpAdapterInfo->Address);, H* @( _4 R0 {! `
      }
4 Z3 y# ?4 {1 p: E7 F. K      cout<<"网卡IP地址如下:"<<endl;
4 A+ r$ N8 v4 O      //可能网卡有多IP,因此通过循环去判断
" e8 s' i! y7 D# |" b2 [+ J      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);7 B3 p3 ?3 Y" a1 U) O0 w* _
      do0 t. C2 q: g; b/ }
      {6 G: q1 J) N/ D8 }2 V* K
        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;
* B4 [2 z0 Y/ E3 p        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;- R" G$ K5 X/ x- k* }# Q0 c
        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;
6 q7 u" o8 f3 H7 [1 f6 }        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;- m* n( a) ~6 Z! J, Q
        pIpAddrString=pIpAddrString->Next;$ r: S+ X* p! ~" ^( O0 f
      } while (pIpAddrString);! Z4 }4 J, @3 X
      pIpAdapterInfo = pIpAdapterInfo->Next;3 H. @" T& G) [; E& U  ~* k" K
      cout<<"--------------------------------------------------------------------"<<endl;% X: ]1 K4 E+ K- x5 z
  }9 l" Q; ^& }/ M# x5 ?( q& \
   * J; k& C$ e: Y+ s4 `: P
  }% a" ?6 l' Z! [* E9 B- R
  //释放内存空间; d; G5 n: y3 l" Q7 ~4 X
  if (pIpAdapterInfo)
# P, M9 M. X8 B6 x7 P* t  {7 H3 H7 k0 @6 E) @6 U
    delete pIpAdapterInfo;7 p2 ~) T- G5 I" v
  }
& Y; [  z' d" i" j/ h  
; @# a' e- x1 ]! S: A; I  return 0;
5 I. V( X+ w# I4 V) V* G}
0 N  {1 O  J$ [" a5 Q/ \  p+ }% R: b. n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了