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语言实现扫雷游戏小项目,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C++课程设计之图书馆管理系统

    C++课程设计之图书馆管理系统

    这篇文章主要为大家详细介绍了C++课程设计之图书馆管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++实现LeetCode(186.翻转字符串中的单词之二)

    C++实现LeetCode(186.翻转字符串中的单词之二)

    这篇文章主要介绍了C++实现LeetCode(186.翻转字符串中的单词之二),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++无符号整数溢出问题解析

    C++无符号整数溢出问题解析

    这篇文章主要介绍了C++无符号整数溢出探究,本文主要探讨C/C++中无符号整数超过范围后的计算问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C语言实现飞机小游戏

    C语言实现飞机小游戏

    这篇文章主要为大家详细介绍了C语言实现飞机小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析

    虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析

    本篇文章是对虚函数与纯虚函数进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Qt+GDAL库实现制作经纬度坐标转换工具

    Qt+GDAL库实现制作经纬度坐标转换工具

    这篇文章主要为大家详细介绍了如何利用Qt和GDAL库实现制作经纬度坐标转换工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-04-04
  • Opencv实现绿幕视频背景替换功能

    Opencv实现绿幕视频背景替换功能

    这篇文章主要为大家详细介绍了Opencv实现绿幕视频背景替换功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 如何用C++制作LeetCode刷题小技巧-错题记录本

    如何用C++制作LeetCode刷题小技巧-错题记录本

    这篇文章主要介绍了如何用C++制作LeetCode刷题小技巧-错题记录本的方法,需要的朋友可以参考下
    2021-04-04
  • 详解如何配置CLion作为Qt5开发环境的方法

    详解如何配置CLion作为Qt5开发环境的方法

    这篇文章主要介绍了详解如何配置CLion作为Qt5开发环境的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论