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

本文实例讲述了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++程序设计有所帮助。

(0)

相关推荐

  • 详解C++的JSON静态链接库JsonCpp的使用方法

    JsonCpp部署方法: 在http://sourceforge.net/projects/jsoncpp/中下载最新版本的jsoncpp库源码. 之后将jsoncpp-src-版本号-tar.gz解压出来,打开makefiles中的jsoncpp.sln进行编译,之后build文件夹下的vs71\debug\lib_json中会有一个.lib静态链接库. JsonCpp主要包含三种类型的class:Value Reader Writer. jsoncpp中所有对象.类名都在namespace

  • 如何利用Emacs来调试C++程序

    俗话说,Emacs是神的编辑器,而Vim是编辑器之神.高手程序员都是用这两样神器进行开发.本人觉得,Emacs之所以厉害,是因为许多在其他编辑器下必须用鼠标点选很多步的操作,在Emacs下都可以通过键盘来完成.大大地节省了你在显示器上找按钮的时间.Emacs在Linux上运行感觉比windows流畅些,用Emacs编辑程序时,手基本不用离开键盘,就可以完成所有的工作.那么今天就让我们看看如何利用Emacs来调试C++程序. 一.安装Emacs和GCC 下载地址:Emacs:http://www.

  • 动态库调用静态库示例讲解

    生成动态库: 需要的目标文件得用-fPIC选项生成. 而静态库所需的目标文件可以不用-fPIC选项. 例: 复制代码 代码如下: /////// static.h void static_print(); ///////static.cpp #include <iostream> #include "static.h" void static_print() { std::cout<<"This is static_print function&quo

  • 解决在Mac下直接解压C++静态库出现的问题

    发现问题 C++的静态库(*.a文件)就是一个压缩包,把所有 *.o 文件打包在里面. 所以我想尝试做的事很简单:就是把静态库里的 *.o 文件都解压出来,然后在用这些 *.o 文件链接合并为一个动态库.我直接双击解压的,这样就得到了一堆的 *.o 文件.然后我执行了生成动态库的命令,类似如下: c++ -g -dynamiclib -Wl,-headerpad_max_install_names -o libtest.dylib /usr/lib/libexpat.dylib /usr/lib

  • 老生常谈C语言静态函数库的制作和使用

    C语言的函数库是多组经过验证的常用函数的集合,编写C语言程序时使用库函数,既可以提高程序运行效率,又可以提高编程质量,使用方法如#include 和#include. 根据使用库函数时,函数库加载时机的差异,将函数库分为静态函数库和动态函数库,具体差异是:C语言程序如果使用静态函数库的函数,那么整个函数库的代码都会和C语言程序一起编译成可执行代码,程序的体积会膨胀:如果使用动态函数库的函数,则C语言程序只会和函数库文件名以及函数名一起编译成可执行代码(不编译函数代码),运行时去查找函数库文件和函

  • C++获得本机所有网卡的IP和MAC地址信息的实现方法

    一台机器上可能不只有一个网卡,但每一个网卡只有一个MAC地址,而每一个网卡可能配置有多个IP地址:如平常的笔记本电脑中,就会有无线网卡和有线网卡(网线接口)两种:因此,如果要获得本机所有网卡的IP和MAC地址信息,则必须顺序获得每个网卡,再依次获取其信息等:在windows sdk中,用IP_ADAPTER_INFO结构体存储网卡信息,包括网卡名.网卡描述.网卡MAC地址.网卡IP等,该结构体的主要描述如下所示: typedef struct _IP_ADAPTER_INFO { struct

  • Mac下使用Eclipse编译C/C++文件出现 launch failed, binary not found 解决方案

    新建C/C++工程第一页,toolchains选择哪个都一样,如图: 第二步: 而后点击"Advanced settings",出现下图: 将第一项取消,第二项选上,点击 OK. 而后点击下一步,点击结束. 新工程完成后,随便新建一个语法正确的初始 .c 文件,然后 command+b "Build All",根目录下出现Binaries目录,大功告成!

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

    本文实例讲述了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

  • Java 获取本机的IP与MAC地址实现详解

     Java 获取本机的IP与MAC地址 有些机器有许多虚拟的网卡,获取IP地址时会出现一些意外,所以需要一些验证: // 获取mac地址 public static String getMacAddress() { try { Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces(); byte[] mac = null; while (allNetInterfaces.ha

  • python获取本机mac地址和ip地址的方法

    本文实例讲述了python获取本机mac地址和ip地址的方法.分享给大家供大家参考.具体如下: import sys, socket def getipaddrs(hostname): result = socket.getaddrinfo(hostname,None,0,socket.SOCK_STREAM) return [x[4][0] for x in result] # the name of the local machine hostname = socket.gethostnam

  • python获取本机所有IP地址的方法

    本文实例为大家分享了python获取本机所有IP地址的具体代码,供大家参考,具体内容如下 import socket # 查看当前主机名 print('当前主机名称为 : ' + socket.gethostname()) # 根据主机名称获取当前IP print('当前主机的IP为: ' + socket.gethostbyname(socket.gethostname())) # Mac下上述方法均返回127.0.0.1 # 通过使用socket中的getaddrinfo中的函数获取真真的I

  • php获取本机真实IP地址实例代码

    本文实例为大家分享了php获取本机真实IP地址实例代码,供大家参考. 主要是获取操作系统为win2000/xp.win7的本机IP真实地址,和获取操作系统为linux类型的本机IP真实地址,具体内容如下 function getLocalIP() { $preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/

  • C++如何获取本机的IP地址

    本文为大家分享了C++获取本机的ip地址程序,供大家参考,具体内容如下 头文件 #include <WinSock2.h> #pragma comment(lib,"ws2_32")//链接到ws2_32动态链接库 class CInitSock { public: CInitSock(BYTE minorVer = 2,BYTE majorVer = 2) { WSADATA wsaData; WORD VersionRequset; VersionRequset = M

  • PHP基于新浪IP库获取IP详细地址的方法

    本文实例讲述了PHP基于新浪IP库获取IP详细地址的方法.分享给大家供大家参考,具体如下: <?php class Tool{ /** * 获取IP的归属地( 新浪IP库 ) * * @param $ip String IP地址:112.65.102.16 * @return Array */ static public function getIpCity($ip) { $ip = preg_replace("/\s/","",preg_replace(&q

  • JSP 获取用户的真实IP两种实现方法详解

    JSP 获取用户的真实IP两种实现方法详解 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP. 经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿

  • C#及WPF获取本机所有字体和颜色的方法

    本文实例讲述了C#及WPF获取本机所有字体和颜色的方法.分享给大家供大家参考.具体如下: WPF 获取所有的字体: System.Drawing.Text.InstalledFontCollection font = new System.Drawing.Text.InstalledFontCollection(); System.Drawing.FontFamily[] array= font.Families; foreach (var v in array) { MessageBox.Sh

  • android 获取本机的IP地址和mac物理地址的实现方法

    获取本机IP地址 public String getLocalIpAddress() { WifiManager wifiManager = (WifiManager) getSystemService(android.content.Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); try { return In

随机推荐