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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>
9 |3 N9 }, g  d  u2 ^#include <Iphlpapi.h>
! t" m% H, w/ A4 c+ ^$ b#include <iostream># Q! @3 Y8 n$ K1 f) I
using namespace std;
& R& N, |7 M  Q- F( @+ S+ d#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库1 p4 E8 J6 g0 H0 J! d" d

  V' \$ E$ t( eint main(int argc, char* argv[])1 s$ s+ m8 Y1 o$ O& R, [
{
3 T1 ?7 a- U1 O  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息! R, ^9 a; x7 ^& B' p4 Y
  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
% K1 `" L( W5 ^- P/ A4 Q  //得到结构体大小,用于GetAdaptersInfo参数
' d- g* E7 L4 [, V( G/ e  unsigned long stSize = sizeof(IP_ADAPTER_INFO);
, V/ |9 P9 D- B+ }$ O5 e$ O. @  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量; v% O! {4 ~/ X
  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
5 T8 O) ?, g" e. [  //记录网卡数量
7 P- g) `+ e/ X( X, l  int neTCardNum = 0;2 m  \+ b# F1 W1 P/ G0 Y
  //记录每张网卡上的IP地址数量6 p4 x; J1 @! N/ [! u) A
  int IPnumPerNetCard = 0;
- K& j5 ?( I5 b- H2 R# ^4 \2 _" v# H  if (ERROR_BUFFER_OVERFLOW == nRel)
! c* G0 Z2 r" I0 \- k2 m( W* F  {
' {6 x1 Z+ m* T0 _    //如果函数返回的是ERROR_BUFFER_OVERFLOW, N9 C9 W5 E% {6 B+ }; h* k4 K6 ^5 N
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小4 [* N" Q5 \' @- }
    //这也是说明为什么stSize既是一个输入量也是一个输出量
+ ]" `* I: r4 W& c+ E    //释放原来的内存空间6 Q; ^0 C, t0 ?% Q- _
    delete pIpAdapterInfo;
# r0 H/ k, \9 C1 B9 ?$ ]    //重新申请内存空间用来存储所有网卡信息
* }6 L- Q* _! o/ w" v. y    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
  |* F1 d1 `0 U- q7 b3 c# f( }8 e5 R    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量8 c9 L9 l- G" t( h
    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  7 I/ I) b; H  O- s! ^7 ]  s1 C
  }0 T9 q/ q. ?; F# e  A6 r1 a
  if (ERROR_SUCCESS == nRel)
" o3 s4 k+ j7 o! [3 M  {
, P. I6 m' N  ^/ J2 o. X1 s    //输出网卡信息
8 [% k+ ]0 g  `' S3 n4 e     //可能有多网卡,因此通过循环去判断
2 s1 x  P- O: l4 i7 @! k1 p- E) g  while (pIpAdapterInfo)) Q1 E. M$ L, E
  {
8 T9 P: e/ w# I    cout<<"网卡数量:"<<++netCardNum<<endl;
2 G- m; C# S' I- a' X    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
# r) H; W' t, i' z. m* s    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;5 \9 Q- ]9 ]2 l; j! E5 K
    switch(pIpAdapterInfo->Type)* G" l- N4 N5 r* l6 ?8 K
    {/ F( l! _' z9 \
    case MIB_IF_TYPE_OTHER:% t9 T6 K0 `4 t8 a: b& T* v
      cout<<"网卡类型:"<<"OTHER"<<endl;
$ V$ @9 t! p! S5 y, d      break;4 u" A% p9 P7 O9 L  v& e
    case MIB_IF_TYPE_ETHERNET:4 A: o4 F) |) z# ^; V5 L
      cout<<"网卡类型:"<<"ETHERNET"<<endl;! h1 E* D# W/ r& b% V& M
      break;
9 p' ?* X9 q8 {) T, ~9 w" j- M( o, f    case MIB_IF_TYPE_TOKENRING:
, G, {  C) E* ?: e! g8 V      cout<<"网卡类型:"<<"TOKENRING"<<endl;1 s  A1 v! \5 I1 n. e$ a
      break;+ |; A* {& M$ @: d" |8 k
    case MIB_IF_TYPE_FDDI:' _& S. m+ W4 j" @) P
      cout<<"网卡类型:"<<"FDDI"<<endl;/ a& z( m* E; j  v
      break;! Z  O& ?6 e: A( w3 @. O9 n1 T9 P+ q4 X
    case MIB_IF_TYPE_PPP:
% F# }+ M3 ]6 j2 c  a6 Z* B      printf("PP\n");
* }/ q7 x# @) F5 ^      cout<<"网卡类型:"<<"PPP"<<endl;0 |  B/ \1 u' s) a
      break;
% d& {/ O; z' J) J, A  }    case MIB_IF_TYPE_LOOPBACK:
8 l" V/ E4 S8 u. ]1 X1 }0 M      cout<<"网卡类型:"<<"LOOPBACK"<<endl;
6 N% B; A7 M6 p8 Z      break;* @8 ]8 I$ F. ]: }0 i
    case MIB_IF_TYPE_SLIP:
( g6 m7 o5 @& f( @) `      cout<<"网卡类型:"<<"SLIP"<<endl;1 ]0 h! a% {4 K0 \  }7 O6 b; D
      break;
' t% ~7 e& a5 P- m2 D! h% {    default:
5 H3 [% X( @" U" r
" g& K# a. w8 p# l" H& Y      break;
8 t% l% T' i  g# {# B    }
6 a& x  {8 H& Z9 h6 ~; v* B    cout<<"网卡MAC地址:";) _( ^# R6 `' ^# b
    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)8 c0 S8 b. d$ d% n, _  q: K# q
      if (i < pIpAdapterInfo->AddressLength-1)8 N1 u- x) K7 W' _! r: F( N' J
      {
! z" @9 b& |% y$ a7 Q! n        printf("%02X-", pIpAdapterInfo->Address);
2 r  [+ o) h) Y& {+ M& x2 c8 Y      }
/ Z: M; i' u# @1 X2 j% S; X      else* ?* z7 g  N2 u3 ^5 i( z6 [
      {
% ?% g( H  U- i        printf("%02X\n", pIpAdapterInfo->Address);4 q+ s& u* L2 l+ G+ i8 l
      }
" M3 c; t  ?: X; e" B8 y& u      cout<<"网卡IP地址如下:"<<endl;
1 S0 [: v% B( W' r1 K9 W      //可能网卡有多IP,因此通过循环去判断
/ k3 v) z0 [  f2 V. Y% C      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);' P; v' q& R. M' x
      do: k3 C0 ?2 T# `. P/ k/ S
      {
( Y6 B) m$ Y5 o1 \8 q( `7 D* i        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;( D. V$ ~) }. K% a& X* A* l
        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;
3 ^, H9 c+ P& c        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;
4 j7 A: l. {# ~# Y, m        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;
1 P% P5 L& `; D3 H        pIpAddrString=pIpAddrString->Next;7 F6 Y1 n. z# _- e! M
      } while (pIpAddrString);6 p: u9 U1 B) v) B% \
      pIpAdapterInfo = pIpAdapterInfo->Next;' J. F) D+ @2 |9 X
      cout<<"--------------------------------------------------------------------"<<endl;/ q9 i7 v' n; \+ g- E
  }- Z* \+ H3 U7 }
   
( `2 A2 m. T0 t$ c4 a# f  }! J8 T( E3 q& o6 F% s
  //释放内存空间
% e: i8 Z" ~% z7 s, u: M! R  if (pIpAdapterInfo)
) \1 \. K* U' ?" ~# o5 F0 Q  {
4 E2 ?4 `: t3 I4 y    delete pIpAdapterInfo;5 l. K3 @1 P( T2 P9 [9 P, E
  }
# M) k( i) q# A+ `) m) N  
5 Q9 b; A% q- S2 K8 |  return 0;
! ]. {/ z; P" p9 d! P' q}2 |: m7 I5 _7 Y* M: K
0 x, v+ ?9 ?$ l* Q) E
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了