zoukankan      html  css  js  c++  java
  • 获取远程计算机MAC

    编写说明

    工作环境中不允许进入3层交换机,但客户机不允许断网,实现获取IP地址主要用于IP冲突检测。通过于没有IP冲突时的MAC对比,查看与那台计算机的IP产生冲突。

    示例代码

    // MAC.cpp : 定义控制台应用程序的入口点。
    //

    #include "stdafx.h"
    #include <WinSock2.h>
    #include <IPHlpApi.h>

    #pragma comment(lib,"ws2_32.lib")
    #pragma comment(lib,"IPHlpApi.lib")

    BOOL GetMac(CHAR *IpAddr, BYTE *MacAddr)
    {
    CHAR macAddr[13]={0};
    IPAddr ipAddr;
    ULONG Mac[2];
    ULONG MacLen;

    memset (Mac, 0xff, sizeof (Mac));
    MacLen = 6;
    ipAddr=inet_addr(IpAddr);
    DWORD hr = SendARP (ipAddr, 0, Mac, &MacLen);
    if(hr==0)
    {
    PBYTE pbMac = (PBYTE)Mac;
    for (ULONG i=0;i<MacLen;i++)
    {
    MacAddr[i]=pbMac[i];
    }
    }
    else
    {
    return FALSE;
    }

    return TRUE;
    }

    int main(int argc, char* argv[])
    {
    if (argc!=2)
    {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),14);
    printf("MAC命令格式不正确!\n");
    printf("\t格式:MAC IP地址\n");
    printf("\t例子:MAC 135.2.7.2\n");
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
    return 0;
    }
    //CHAR IpAddr[16]=argv[1];
    BYTE MacAddr[6]="";
    CHAR szMacAddr[18]="";

    BOOL bReturn=GetMac(argv[1],MacAddr);
    sprintf(szMacAddr,"%02X-%02X-%02X-%02X-%02X-%02X",MacAddr[0],MacAddr[1],MacAddr[2],MacAddr[3],MacAddr[4],MacAddr[5]);
    if (bReturn)
    {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
    printf("%s\n",szMacAddr);
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
    }
    else
    {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12);
    printf("主机 %s 网络不通或者对方关闭ICMP回显!\n",argv[1]);
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
    }

    return 0;
    }



  • 相关阅读:
    建造者模式
    设计模式的思考
    与公司开票接口对接的设计
    读EntityFramework.DynamicFilters源码_心得_设计思想_04
    读EntityFramework.DynamicFilters源码_心得_单元测试03
    读EntityFramework.DynamicFilters源码_心得_示例演示02
    带你看懂Dictionary的内部实现
    Working With Taxonomy Field in CSOM
    SharePoint 2013 REST 以及 OData 基础
    SharePoint API如何处理时区问题
  • 原文地址:https://www.cnblogs.com/shya/p/2334199.html
Copyright © 2011-2022 走看看