PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[转载电子书] C++获得本机所有网卡MAC地址信息的实现方法

[复制链接]

2017-10-17 21:05:45 3432 0

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>
. I3 d9 f6 q( n1 ]; p1 X" ^' M#include <Iphlpapi.h>
" t; ^8 s+ s4 p) _, w#include <iostream>
7 T% ?! e5 p8 x: P) a, Kusing namespace std;
6 S! K% G1 m- b#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库. c+ s8 {+ p3 G0 F

1 }& q- k8 t# V* C& S& G4 B, ^int main(int argc, char* argv[])
+ a' C$ w( D! U2 Y+ O% J{- [0 W9 Z$ c6 m4 H3 J4 o! B
  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息
& l& @  N( u8 |5 n/ O: j0 x  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
' y7 b6 ]* N8 R2 E5 \  //得到结构体大小,用于GetAdaptersInfo参数
3 Q# r+ W, R6 P  unsigned long stSize = sizeof(IP_ADAPTER_INFO);" ?0 l/ n# ?' S7 @2 m/ T
  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量' o: O) A# h& i* \5 K5 p
  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
# k$ G0 P% U, M7 U+ J4 h- \" l  //记录网卡数量
3 S+ y( A& v- G, G+ d/ ]  int neTCardNum = 0;2 \. M! o" ~" \
  //记录每张网卡上的IP地址数量
& \8 @2 d' D0 K0 F  I( F  int IPnumPerNetCard = 0;
; o0 g( s/ |2 i1 f* f  if (ERROR_BUFFER_OVERFLOW == nRel)4 W; f3 o! K2 s) Q) c3 X3 z) E: t
  {
) X' p* W: {0 i/ o/ t2 [    //如果函数返回的是ERROR_BUFFER_OVERFLOW
6 a9 r7 H8 _* P) v. Z2 x( O    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
/ V5 l  [8 B* _$ j! ]2 ?% F- |    //这也是说明为什么stSize既是一个输入量也是一个输出量$ \# E" D9 Q) A; v4 q) v
    //释放原来的内存空间% R+ e: c( k& i. P! C+ D8 S6 `
    delete pIpAdapterInfo;  N: j( l" M$ M
    //重新申请内存空间用来存储所有网卡信息2 j: b3 X+ K' q5 ]6 U$ |
    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];8 S) l2 d- c# C5 [$ A* Q, d5 v5 k
    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量) g8 V3 L- @6 U" S$ A; v; S
    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  
8 }  J( Z1 z# K. o% E  }
" A7 F2 g$ P1 `& u+ y9 t% Y0 r  if (ERROR_SUCCESS == nRel)
; S, g$ \9 [& k  {
: o+ e7 o4 V/ r$ P/ o5 F5 j    //输出网卡信息
  h( E9 h- m8 p) q- W+ b  C( Q     //可能有多网卡,因此通过循环去判断; G9 z' C( t" V7 d3 j5 d& A
  while (pIpAdapterInfo)
' |8 G5 O3 \; s! U0 x  {
/ I0 N' S& i1 \    cout<<"网卡数量:"<<++netCardNum<<endl;; m  T3 b' q+ E8 S: h
    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;$ d/ }, S) j/ D6 B. ?% V9 o, g# n
    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;  h, N+ l0 v# U3 z9 W
    switch(pIpAdapterInfo->Type)
# T# W5 ]! _: N: }    {
4 C' _! R5 B" q- o& M: R  y    case MIB_IF_TYPE_OTHER:% {5 q/ D' O: N3 Q0 d  S
      cout<<"网卡类型:"<<"OTHER"<<endl;9 ]5 ?$ Z6 C  q( U
      break;
8 Q- F5 o" M( b- O. @, w. t8 C* V% j    case MIB_IF_TYPE_ETHERNET:
- E( ]: Q& t$ Z4 M6 y5 p      cout<<"网卡类型:"<<"ETHERNET"<<endl;/ I( K: C4 ]; I, d! {
      break;, k7 p. @( a/ R
    case MIB_IF_TYPE_TOKENRING:
% [! e0 s! F8 {# l      cout<<"网卡类型:"<<"TOKENRING"<<endl;8 Z% J% V: L' z
      break;
5 m' m% U+ L; r2 q) e( X) e# k    case MIB_IF_TYPE_FDDI:
2 g: ]2 W& w; |; [& b      cout<<"网卡类型:"<<"FDDI"<<endl;+ T$ l/ t' ~. s% L: k
      break;
$ W& H- i3 H' G1 S/ C6 d    case MIB_IF_TYPE_PPP:5 L2 S- M3 \% H* j& w8 ^/ j- @! g
      printf("PP\n");: b% O: M  }/ J. k) ~
      cout<<"网卡类型:"<<"PPP"<<endl;
# [& w! `& S$ Y# r1 m. [      break;
6 j  ~& w3 j- W$ _0 V    case MIB_IF_TYPE_LOOPBACK:
& F. _1 |1 g6 N$ l1 O# L  \# b      cout<<"网卡类型:"<<"LOOPBACK"<<endl;* x8 L& I, W. ]6 s( S
      break;
9 p* ~  D( S" }6 {    case MIB_IF_TYPE_SLIP:% H' h4 L2 U$ M2 F( r
      cout<<"网卡类型:"<<"SLIP"<<endl;1 f, a9 N/ T, [1 W6 i1 R: f$ [# ]+ A
      break;9 Q; K6 }9 w$ F2 z2 J$ E
    default:
8 Z' o9 E, y4 S/ J2 _5 \" q/ f
/ l5 p" a5 g7 R6 @* o      break;
- i( c$ A' V1 g" Q( a    }/ }7 H0 n4 R4 a) J5 I& N% k
    cout<<"网卡MAC地址:";) ^, `4 k9 u3 R- I
    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)
( j' t. t: l; d8 [4 t      if (i < pIpAdapterInfo->AddressLength-1)
2 t) d9 `: j% z0 S1 X      {# t; V4 j8 E2 S% U- l, t& B' i
        printf("%02X-", pIpAdapterInfo->Address);
; M' [1 H1 d! J" ~      }
# p9 L& L: Q4 d* J      else
8 C) a, s  \7 P$ g. s. e( U0 j' |      {$ ~$ f1 G" ?0 w% W/ y
        printf("%02X\n", pIpAdapterInfo->Address);
3 I1 o2 Y2 C6 v% o) o      }# M% _% \( `& L0 Z& T
      cout<<"网卡IP地址如下:"<<endl;
. R- }% h* x' T      //可能网卡有多IP,因此通过循环去判断
+ [2 t) Q$ \" @7 V9 f" ^      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);3 F# S$ J5 L1 N4 w. O7 i
      do
- S; ^8 ~, H. k9 H+ B8 U3 |      {7 k" Q  p4 u2 ^+ e$ m' W# z
        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;
. ^1 s1 _$ J& A* U% _        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;# B8 n0 L, B+ m/ t
        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;+ e( {. ?& H- |$ ^) C) n7 h
        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;
, h+ |' r/ D. L+ ?! H        pIpAddrString=pIpAddrString->Next;
+ f8 w8 m& E: u, h% [9 q      } while (pIpAddrString);" X4 ?3 q5 d* T- _) L' }
      pIpAdapterInfo = pIpAdapterInfo->Next;$ X0 Q: m: G5 f4 t
      cout<<"--------------------------------------------------------------------"<<endl;; l  j! Q- ^5 F, o- S: r
  }
" I% k2 L: n/ L2 \   1 k, A+ W3 `' d7 k
  }: L* g! {$ ]( w; N
  //释放内存空间
4 R2 g4 `# C! G5 B$ {2 F  if (pIpAdapterInfo)
. q. C) o4 r% i( ~( v# a( E  {+ N, \) |8 ~7 ~0 u  C. p
    delete pIpAdapterInfo;9 c4 U: z  u+ X7 R/ a  v
  }
+ x( u# @' T9 R) Y/ Q  8 N$ i/ A% d, T3 `
  return 0;
# }4 X# \# H& j) W. J5 {& T+ d6 f}
9 G6 G1 L1 @: \1 @5 w
4 J( U$ W4 B2 h; h2 `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了