C++获取本机MAC,IP,MASK地址的方法

 更新时间:2014年10月20日 11:25:06   投稿:shichen2014  
这篇文章主要介绍了C++获取本机MAC,IP,MASK地址的方法,主要通过IPHLPAPI.lib调用相关函数实现该功能,是非常实用的技巧,需要的朋友可以参考下

本文实例讲述了C++获取本机MAC,IP,MASK地址的方法,分享给大家供大家参考。具体方法如下:

复制代码 代码如下:
#include "InitSock.h" 
#include <stdio.h> 
 
#include <iphlpapi.h> 
#pragma comment(lib, "IPHLPAPI.lib") 
 
u_char g_ucLocalMac[6]; 
DWORD g_dwGatewayIP; 
DWORD g_dwLocalIP; 
DWORD g_dwMask; 
 
BOOL GetGlobalData() 

    PIP_ADAPTER_INFO pAdapterInfo = NULL; 
    ULONG ulSize = 0; 
    //为结构申请内存 
    ::GetAdaptersInfo(pAdapterInfo, &ulSize); 
    pAdapterInfo = (PIP_ADAPTER_INFO)::GlobalAlloc(GPTR, ulSize); 
    if ( ERROR_SUCCESS  == ::GetAdaptersInfo(pAdapterInfo, &ulSize)) 
    { 
        if (pAdapterInfo != NULL) 
        { 
            memcpy(g_ucLocalMac, pAdapterInfo->Address, 6); 
            g_dwGatewayIP = ::inet_addr(pAdapterInfo->GatewayList.IpAddress.String); 
            g_dwLocalIP = ::inet_addr(pAdapterInfo->IpAddressList.IpAddress.String); 
            g_dwMask = ::inet_addr(pAdapterInfo->IpAddressList.IpMask.String); 
        } 
    } 
    //in_addr表示IP的结构 
    in_addr in; 
    in.S_un.S_addr = g_dwLocalIP; 
    printf("  IP Address:%-30s\n", ::inet_ntoa(in)); 
 
    in.S_un.S_addr = g_dwGatewayIP; 
    printf("  Gateway Address:%-30s\n", ::inet_ntoa(in)); 
 
    in.S_un.S_addr = g_dwMask; 
    printf("  MASK Address:%-30s\n", ::inet_ntoa(in)); 
 
    u_char* p = g_ucLocalMac; 
    printf("  MAC:%02X-%02X-%02X-%02X-%02X-%02X\n", p[0], p[1], p[2], p[3], p[4], p[5]); 
    ::GlobalFree(pAdapterInfo); 
    pAdapterInfo = NULL; 
    return TRUE; 

 
void main() 

    CInitSock initSock; 
     
    GetGlobalData(); 
 
    printf("*******************************"); 
    getchar(); 
}

希望本文所述对大家的C++程序设计有所帮助。

相关文章

  • C++选择排序算法实例

    C++选择排序算法实例

    这篇文章主要介绍了C++选择排序算法实例,本文先是介绍了什么是选择排序,然后给出了实现代码,需要的朋友可以参考下
    2014-10-10
  • Qt音视频开发之音频播放QAudioOutput的实现

    Qt音视频开发之音频播放QAudioOutput的实现

    这篇文章主要为大家详细介绍了如何利用Qt实现音频播放QAudioOutput功能,文中的示例代码讲解详细,对我们学习Qt开发有一定的帮助,需要的可以参考一下
    2023-03-03
  • 深入浅出理解C语言初识结构体

    深入浅出理解C语言初识结构体

    C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许你存储不同类型的数据项,本篇让我们来了解C 的结构体
    2022-02-02
  • VC6.0常用快捷键大全

    VC6.0常用快捷键大全

    这篇文章主要介绍了VC6.0常用快捷键大全,非常实用,需要的朋友可以参考下
    2014-08-08
  • 基于Qt实现C/C++调用Matlab函数全过程

    基于Qt实现C/C++调用Matlab函数全过程

    这篇文章给大家详细介绍了基于Qt平台实现C/C++调用Matlab函数全流程,文中通过图文和代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • C++算法之海量数据处理方法的总结分析

    C++算法之海量数据处理方法的总结分析

    本篇文章是对海量数据处理方法进行了详细的总结与分析,需要的朋友参考下
    2013-05-05
  • C语言拓展实现Lua sleep函数

    C语言拓展实现Lua sleep函数

    这篇文章主要介绍了C语言拓展实现Lua sleep函数,本文使用C语言写出sleep函数,编译后在Lua中调用,需要的朋友可以参考下
    2015-04-04
  • C++类型转换的深入总结

    C++类型转换的深入总结

    这篇文章主要给大家介绍了关于C++类型转换的深入总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • C++详细讲解图的遍历

    C++详细讲解图的遍历

    图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历
    2022-05-05
  • C++线性表深度解析之动态数组与单链表和栈及队列的实现

    C++线性表深度解析之动态数组与单链表和栈及队列的实现

    这篇文章主要为大家详细介绍了C++实现动态数组、单链表、栈、队列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论