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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>
/ P# m# a  y2 Y#include <Iphlpapi.h>
/ y) _$ x" ?% p/ p4 j( _, C/ H9 g#include <iostream>( B( E' P# N4 A" _" V
using namespace std;
; X7 Z( m( X" |& L, n#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库
. V4 U& b* W1 b# ]2 X! D$ P4 y/ |5 g/ a: J% X* _6 g
int main(int argc, char* argv[])
$ _1 U# K2 B4 V) w. w) U% z{
6 m: p/ P: c  B& k  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息
5 Q( y- M9 S' k8 L) m, s  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();9 X& \- u0 d9 r4 o* n+ \/ A
  //得到结构体大小,用于GetAdaptersInfo参数' _. _( G5 ]+ M9 @5 ?/ l4 {
  unsigned long stSize = sizeof(IP_ADAPTER_INFO);8 f# o5 L- x" M: k3 X3 a
  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量7 i8 I; x* h. O) v6 F0 b0 Y3 C& M' J
  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
( v. l5 m& z5 m% j" N$ F3 u. Q  //记录网卡数量: X4 S1 H  `, `# W6 m
  int neTCardNum = 0;
5 V# r  B1 }5 Z( F: ~* C  //记录每张网卡上的IP地址数量% ^8 z; w7 k) ^5 }8 m! ~
  int IPnumPerNetCard = 0;
; K) t' B# u" O; W0 z  if (ERROR_BUFFER_OVERFLOW == nRel)2 ?+ }) ~' A0 x7 N4 ?
  {
: O/ Z8 ~% K- o  q7 a0 t    //如果函数返回的是ERROR_BUFFER_OVERFLOW- a/ Y$ q& f' J
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小# g' e! [& I1 H, e
    //这也是说明为什么stSize既是一个输入量也是一个输出量5 ~% z% n) D. ?9 X1 o
    //释放原来的内存空间
& Z4 G! ?/ T0 x3 q$ \1 f3 V    delete pIpAdapterInfo;
$ l( N) G% ?  L/ q* l% o1 z8 D/ U) Q    //重新申请内存空间用来存储所有网卡信息
7 Q: }: a6 g" n) y    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];$ q2 A4 F+ m7 F7 z
    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
5 T: Y( C! N0 E4 {. {    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  
9 m0 C5 d$ c# X" `6 Q$ W. {  }
- s5 T6 k; f: L+ p5 Z  if (ERROR_SUCCESS == nRel)
: u5 P% s; M8 {# V& t- D4 S  {+ ]' V1 b5 p$ o" o' u
    //输出网卡信息; V2 K$ N! b( H! m# X9 ^
     //可能有多网卡,因此通过循环去判断: G( I4 F3 r: n9 r
  while (pIpAdapterInfo)
( U  s9 a" @8 F- O  {
  n) {) O; W1 }  |8 c) @    cout<<"网卡数量:"<<++netCardNum<<endl;
7 D& x) [0 @" U, _( I6 T1 l    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
& U( y1 U# H( f$ A+ P    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;, |6 c* }" f; a% ?, O& Q4 J% B
    switch(pIpAdapterInfo->Type)4 A2 U2 d. x" ]' y* R
    {9 Z+ o7 l* P/ H6 C! S% L7 j" ^5 E  t6 W& ?
    case MIB_IF_TYPE_OTHER:
- G; y% o! B: r2 P- B! K) ~( \      cout<<"网卡类型:"<<"OTHER"<<endl;3 @. N; o( p, c8 W) j
      break;" m+ j6 D4 B& N1 ]& P2 `
    case MIB_IF_TYPE_ETHERNET:6 o5 x6 N1 W+ G3 |4 `
      cout<<"网卡类型:"<<"ETHERNET"<<endl;! r; @+ f+ |/ N+ R$ p9 V, u8 E
      break;" [& k+ J6 P. F4 {) k3 x
    case MIB_IF_TYPE_TOKENRING:1 B) a* @; r* L2 e$ ]" _
      cout<<"网卡类型:"<<"TOKENRING"<<endl;. s( ]( b; z  c' M
      break;
, y4 W1 K9 t4 ?  S/ R6 {    case MIB_IF_TYPE_FDDI:
$ S+ j6 C% ^; v' l7 e" o, i      cout<<"网卡类型:"<<"FDDI"<<endl;
  O2 l4 t. O: f. i: a: i      break;
2 d8 E$ H" k( ?$ I( G    case MIB_IF_TYPE_PPP:
3 P" o  o6 i- }( ]' B      printf("PP\n");- w3 s' Y6 x! U9 ]- A) r/ l( {  n) N
      cout<<"网卡类型:"<<"PPP"<<endl;) `; Q$ q( Y! V3 k. g0 }
      break;
6 d+ L: b- i" P& T3 @: X% T    case MIB_IF_TYPE_LOOPBACK:' Z9 \) H/ |. d0 K9 O" z
      cout<<"网卡类型:"<<"LOOPBACK"<<endl;
7 }+ [- h5 z0 {1 R2 r+ B      break;; h$ {: k- p  y
    case MIB_IF_TYPE_SLIP:+ c1 _" y5 k5 f8 T3 W1 ^  W% F
      cout<<"网卡类型:"<<"SLIP"<<endl;( S% L  R& z" m& M0 J( B
      break;
% S& n( t: L+ t5 ~    default:
/ q* W: B  ^, G& v' {: @/ e! \% W7 q3 ~0 ^# V/ {  v
      break;! Z# r8 M9 t& l- T
    }
% x6 J  p/ O, w    cout<<"网卡MAC地址:";5 K" }8 h$ y, G
    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)
" Y' M* h6 b; X5 X) N0 `( F. \( ~      if (i < pIpAdapterInfo->AddressLength-1)
+ m& f1 w9 i8 u! O      {; \- C+ ], p# a3 V) i) B
        printf("%02X-", pIpAdapterInfo->Address);( @* Q9 z& m) R( z% ^2 Y1 j" a7 c
      }
7 H3 A: @! C# F* y: V      else
7 k6 X' m% i) K; o      {
) H' Q7 U  ^' w. h. J$ t+ x        printf("%02X\n", pIpAdapterInfo->Address);
$ b" x9 X9 @- k, ?      }
4 l# f* V5 E- C1 I/ C0 M$ M4 P  d/ \9 m      cout<<"网卡IP地址如下:"<<endl;0 R7 a; Z+ h. @# }
      //可能网卡有多IP,因此通过循环去判断
7 {1 F* e2 |& P: T  `4 \' z% {      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);5 p; `6 A- _+ L5 C
      do0 G6 c, T6 Y# w5 s4 M4 L
      {
. w8 z2 h6 z( u/ j, u( _        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;0 h" Z- S: K. I! t! s
        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;2 o9 E6 d' A0 W% @6 H
        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;
& t3 n$ W1 q" u6 n        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;* C6 n! N+ W" ]- A! `
        pIpAddrString=pIpAddrString->Next;1 b( |% t( }9 T* G% V" Z& m
      } while (pIpAddrString);
& `! @+ N8 w9 y2 q% f      pIpAdapterInfo = pIpAdapterInfo->Next;
+ Z6 L- q- I1 }# i9 G/ o8 C      cout<<"--------------------------------------------------------------------"<<endl;
. t+ I4 H' L8 `( o( n  }: C6 h# S3 M. \& N$ B) M9 z$ V
   
; k% r% K# f( J$ v$ F# A8 \& ~  }' z. [; _; N; ?9 M# _8 p. }
  //释放内存空间
3 ]1 w& G0 w& ~+ V+ ?- t  if (pIpAdapterInfo)
% x2 n- M5 x. M6 S" ]  {4 T3 f( \% t) M2 [
    delete pIpAdapterInfo;7 v7 q) T3 q$ C% k  Y/ U" g0 K% l
  }3 W% ?- k& q# e# w8 X' I" q& R1 x& t3 J
  + Z- u6 q+ K& |7 B. m$ S
  return 0;, G$ `" u4 P( v! `
}
' _" I, i4 X/ ]- f9 G, i# W$ |
3 \# y& J; @) U" `( S
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了