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

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

admin 楼主

2017-10-17 21:05:45

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

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

x
#include <WinSock2.h>* M$ C$ r7 u$ l6 K! d( i+ K
#include <Iphlpapi.h>, u6 ^. v0 K% \4 _$ Q% [) g  j6 J
#include <iostream>
: B) ^$ d* u; v$ Z8 \; J# husing namespace std;  _* G. K4 m9 R# m7 M; O
#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库4 e* e6 N. M1 v" K9 p
1 C1 k; i, \3 v9 j. p
int main(int argc, char* argv[])
* t; o9 ]6 Q  i. M( E, z{
* d2 e( E' E1 R+ L* I  //PIP_ADAPTER_INFO结构体指针存储本机网卡信息
: s0 k# Q3 f9 j& m" y2 G  PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
5 p( X! H  g+ a0 j$ }  a  //得到结构体大小,用于GetAdaptersInfo参数
9 I6 c, H' [1 x. }' W5 Z  unsigned long stSize = sizeof(IP_ADAPTER_INFO);- A/ t0 z3 y) |8 V
  //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量$ t( K4 z4 ]( f! I$ U$ D4 v" l) Z
  int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);7 H! n1 i, D  U1 c& A
  //记录网卡数量
/ d, p  y4 Q) K# r9 J; r0 w# K+ I0 ?  int neTCardNum = 0;. k# H, ]. ]: E" `; k6 `" Y
  //记录每张网卡上的IP地址数量
1 k4 M% N1 O! o0 e# T  int IPnumPerNetCard = 0;
1 P8 t' L- ]( ~' i% f  if (ERROR_BUFFER_OVERFLOW == nRel)0 @* ]8 D# ~& f2 Q' Q* I. |1 D4 f- M
  {
/ q; i- x, {2 U    //如果函数返回的是ERROR_BUFFER_OVERFLOW" W+ y( ^7 r7 q- c# F: M
    //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小9 j! m+ m, y, m7 {4 k; j
    //这也是说明为什么stSize既是一个输入量也是一个输出量
2 S2 V* T! i' r" W    //释放原来的内存空间
% |9 x& \+ ^! _/ ~" w    delete pIpAdapterInfo;
$ V6 R6 }7 s. W( B    //重新申请内存空间用来存储所有网卡信息4 [# [; y4 @% j; w4 p
    pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
( S" U# ~4 A& d  n* a9 E$ k    //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量  L( k2 ~7 N# Y
    nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);  + l0 \' l/ g2 h" ~7 O0 g' {8 p  c
  }7 W. J; H  Q6 k6 y7 q
  if (ERROR_SUCCESS == nRel)5 B* P- b5 e; n, E% P
  {
/ G; |* N7 B2 q4 x    //输出网卡信息
4 l5 V6 x3 f, s8 Y7 H" G     //可能有多网卡,因此通过循环去判断4 o* S; M2 \. l8 U) K5 S
  while (pIpAdapterInfo)" [( f2 B# N: j- ^* o* Y
  {- _1 S4 C# p) D' I( P5 i
    cout<<"网卡数量:"<<++netCardNum<<endl;) x( x- D/ i7 ^6 n- D; w
    cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
& P% w2 `% ]  ]: E7 H    cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;8 H* H9 o+ B0 c* h7 `! a! D2 E. E
    switch(pIpAdapterInfo->Type)6 W3 G( O; K/ H% k
    {
9 B- p" p  k7 i+ K    case MIB_IF_TYPE_OTHER:
/ A1 U9 \4 }4 ~# C      cout<<"网卡类型:"<<"OTHER"<<endl;
# Z" d2 p# }: p0 O; j3 w8 d' I      break;
+ f: C8 Z, [5 i, t& ^) d    case MIB_IF_TYPE_ETHERNET:
0 j# I* y  b& ]/ D; m9 z/ f. u      cout<<"网卡类型:"<<"ETHERNET"<<endl;
) s+ ]) W+ r; v0 Q" S) y      break;
7 ]0 x7 n" r5 W( j    case MIB_IF_TYPE_TOKENRING:2 p9 ~' G: N& l3 L  e" {
      cout<<"网卡类型:"<<"TOKENRING"<<endl;$ W. @' J3 C' h3 O$ T' |& ]2 I
      break;. G& ^. i- S( M; P) B* i8 d
    case MIB_IF_TYPE_FDDI:
( V2 ^5 u$ Y8 B" p/ W' @      cout<<"网卡类型:"<<"FDDI"<<endl;
: `  }' m6 ^. ~" Y' Q* I      break;: j3 P9 g" ?, x8 H% }; L
    case MIB_IF_TYPE_PPP:) Z# b8 \1 [% P9 J1 u
      printf("PP\n");
. q7 m. l+ c& f; C      cout<<"网卡类型:"<<"PPP"<<endl;  _! q. W0 U8 F0 ]# r- r
      break;
4 g4 k) N1 g4 P7 k  F9 X    case MIB_IF_TYPE_LOOPBACK:% m5 O3 K3 \; M) c& r% @
      cout<<"网卡类型:"<<"LOOPBACK"<<endl;
! r/ N4 U% O6 }' W" [- V9 w      break;% g1 I0 ?$ G% g8 O2 L2 J
    case MIB_IF_TYPE_SLIP:5 C/ ~4 H: w4 E* L% q
      cout<<"网卡类型:"<<"SLIP"<<endl;9 r- b+ Z. o5 h1 i; Z$ x) H
      break;; q% M1 E# Y3 w: ?+ O
    default:  f# ^' d" }* X& q  H

, D8 c$ a# c( v: W" ^# |      break;
1 N" P' B& V& ~  n( f# l2 I1 b. n, L. f    }9 n5 y/ Q: Y1 G
    cout<<"网卡MAC地址:";0 T4 G/ L8 }& ]( @% O' U$ {( [
    for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)& F) u. n7 C! X3 r3 [
      if (i < pIpAdapterInfo->AddressLength-1)
5 c& l: B3 |1 w# z      {
% ^" v% v1 c7 J7 |: T3 K        printf("%02X-", pIpAdapterInfo->Address);
. w$ [0 O7 u* o6 m( l% k! E% p, u, X      }
6 N5 K8 |8 q( m# {6 y      else
3 u, @. i- k8 r0 Q      {
; F0 l0 G! m8 K0 p9 Z5 m        printf("%02X\n", pIpAdapterInfo->Address);
. S/ A9 T2 t# f      }7 q! U8 y3 M* A8 \' V7 g- H! [* t
      cout<<"网卡IP地址如下:"<<endl;" u, d0 o' c' u, Q$ b
      //可能网卡有多IP,因此通过循环去判断/ t7 L9 @; {* `$ V1 H! H% z0 N" q2 E8 @
      IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);) |( d+ E$ ~6 B4 [0 x, r
      do# e, S- c/ y8 K3 O0 b" r: V3 E6 w
      {
$ s. r+ g+ ?9 w! H+ u9 ^        cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;
: c8 j: `: ^& _3 B        cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;' q# |: a: c0 M! O
        cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;. A6 R0 d) @- Q. D
        cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;
) p: ^* Z, r5 i; o6 @' l+ Z& S        pIpAddrString=pIpAddrString->Next;0 V4 ~' X: ~* [* G4 X
      } while (pIpAddrString);4 Z6 A- S3 y+ B9 S3 Z9 Q/ D5 Y( W: r
      pIpAdapterInfo = pIpAdapterInfo->Next;
4 q0 r! a5 r) o+ M* N4 E8 C      cout<<"--------------------------------------------------------------------"<<endl;
3 ^' f: S0 x. R  L1 `: E" V# O  }
6 L1 A* \* c- @0 H   8 b' @8 j6 S8 d/ S
  }
1 p9 }" a7 w/ O- k7 r# `  //释放内存空间# {4 `- r% k# X) @3 \
  if (pIpAdapterInfo)8 i3 _# C6 b) q- ^3 K
  {
! n- N* @( H" I. W. N* r% G    delete pIpAdapterInfo;
7 W/ ]( }  j, F4 I. `  }' ~5 P0 t9 ~; ~
  
* {- C3 t( S: {9 P2 `  return 0;7 v# p7 c+ s, r/ Z- K* v' ]+ e
}
) g$ }6 C( O, b3 E, H$ T  s) F! ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了