C++获取MAC与IP

摘要:
=NRC_GOODRET)return"";for(intlana=0;lanah_addr_list);printf("IP地址:%s",ip);}}WSACleanup();}returnip;}
#include <Nb30.h>
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"netapi32.lib")
std::stringGetMac()
{
    NCB ncb;
    typedef struct_ASTAT_
    {
        ADAPTER_STATUS   adapt;
        NAME_BUFFER   NameBuff[30];
    }ASTAT, *PASTAT;
    ASTAT Adapter;
    typedef struct_LANA_ENUM
    {
        UCHAR length;
        UCHAR lana[MAX_LANA];
    }LANA_ENUM;
    LANA_ENUM lana_enum;
    UCHAR uRetCode;
    memset(&ncb, 0, sizeof(ncb));
    memset(&lana_enum, 0, sizeof(lana_enum));
    ncb.ncb_command =NCBENUM;
    ncb.ncb_buffer = (unsigned char *)&lana_enum;
    ncb.ncb_length = sizeof(LANA_ENUM);
    uRetCode = Netbios(&ncb);
    if (uRetCode !=NRC_GOODRET)
        return "";
    for (int lana = 0; lana<lana_enum.length; lana++)
    {
        ncb.ncb_command =NCBRESET;
        ncb.ncb_lana_num =lana_enum.lana[lana];
        uRetCode = Netbios(&ncb);
        if (uRetCode ==NRC_GOODRET)
            break;
    }
    if (uRetCode !=NRC_GOODRET)
        return "";
    memset(&ncb, 0, sizeof(ncb));
    ncb.ncb_command =NCBASTAT;
    ncb.ncb_lana_num = lana_enum.lana[0];
    strcpy_s((char*)ncb.ncb_callname, 5, "*");
    ncb.ncb_buffer = (unsigned char *)&Adapter;
    ncb.ncb_length = sizeof(Adapter);
    uRetCode = Netbios(&ncb);
    if (uRetCode !=NRC_GOODRET)
        return "";
    char mac[128];
    sprintf_s(mac, 18, "%02X-%02X-%02X-%02X-%02X-%02X",
        Adapter.adapt.adapter_address[0],
        Adapter.adapt.adapter_address[1],
        Adapter.adapt.adapter_address[2],
        Adapter.adapt.adapter_address[3],
        Adapter.adapt.adapter_address[4],
        Adapter.adapt.adapter_address[5]
    );
    returnmac;
}
std::stringGetLanIP()
{
    WSADATA wsaData;
    char name[155];
    char *ip;
    PHOSTENT hostinfo;
    if (WSAStartup(MAKEWORD(2, 0), &wsaData) == 0)
    {
        if (gethostname(name, sizeof(name)) == 0)
        {
            if ((hostinfo = gethostbyname(name)) !=NULL)
            {
                ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);
                printf("IP地址: %s ", ip);
            }
        }
        WSACleanup();
    }
    returnip;
}

免责声明:文章转载自《C++获取MAC与IP》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JAVA实现网页上传头像关于Python的post请求报504错误下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux终端(三)

终端输出使用termios结构,我们可以控制键盘输入,但是如果在显示在屏幕上的输出上可以进行同样级别的控制也许会更好。在我们本章的开始,我们使用printf来向屏幕输出字符,但是却没有办法将输出定位在屏幕上的某个特定位置上。终端类型许多Unix系统使用终端,尽管在今天的许多情况下,终端也许实际上是一个运行终端程序的PC。从历史上来说,不同的生产产商提供了大...

解决Mac上配置JAVA环境时找不到profile的问题

最近公司新配了一台mac电脑,在根据网上教程配置java开发环境时,发现在终端上用profile文件配置环境变量时,终端始终提示找不到命令。 花了差不多一个多小时的时间排查,排查及解决步骤如下: 1.很多计算机中,.bash_profile文件默认是隐藏的,进入对应用户的路径下,command + shift + > ,显示隐藏文件; 2.当时显示...

mac怎么快速回到桌面 隐藏所有窗口

当你同时按下Option+Command+h键,就能把所有已打开的程序窗口(不包括当前正在运行的应用程序窗口)最小化到Dock栏上。注意不是关闭哦,是最小化哦。如果需要把程序窗口恢复到屏幕上,直接点击相应的应用程序图标就可以了。如果你同时按下Option+Command键并点击桌面上空白的区域,就能把除Finder窗口以外的所有窗口隐藏起来,直接显示桌面。...

oracle之to_char,to_date用法

[转载自]http://www.jb51.net/article/45591.htm 这篇文章主要介绍了oracle中to_date详细用法示例,包括期和字符转换函数用法、字符串和时间互转、求某天是星期几、两个日期间的天数、月份差等用法 TO_DATE格式(以时间:2007-11-02 13:45:25为例) 1. 日期和字符转换函数用法(to_date,...

getchar()和scanf()混合使用的坑

最近在混合使用 getchar() 和 scanf() 的时候遇到一个坑,现在记录一下。 代码中使用 getchar() 处理字符输入,用 scanf() 处理数字输入。 getchar() 读取每个字符,包括空格、制表符和换行符; 而 scanf() 在读取数字时则会跳过空格、 制表符和换行符。 比如下面这个程序,读入一个字符和两个数字,然后根据输入的两...

C++解析(28):异常处理

0.目录 1.C语言异常处理 2.C++中的异常处理 3.小结 1.C语言异常处理 异常的概念: 程序在运行过程中可能产生异常 异常(Exception)与 Bug 的区别 异常是程序运行时可预料的执行分支 Bug 是程序的错误,是不被预期的运行方式 异常(Exception)与 Bug 的对比: 异常 运行时产生除0的情况 需要打...