zoukankan      html  css  js  c++  java
  • 通过IP获取局域网的MAC地址

    代码如下:

     1 #include "winsock2.h"
     2 #include "iphlpapi.h"   //For SendARP
     3 #include "stdio.h"
     4 #include "conio.h"
     5  
     6 #pragma comment(lib , "iphlpapi.lib") //For iphlpapi
     7 #pragma comment(lib , "ws2_32.lib") //For winsock
     8  
     9 void GetMacAddress(unsigned char * , struct in_addr );
    10  
    11 int main() 
    12 {
    13     unsigned char mac[6];
    14     struct in_addr srcip;
    15     char ip_address[32];
    16  
    17     WSADATA firstsock;
    18      
    19     if (WSAStartup(MAKEWORD(2,2),&firstsock) != 0) 
    20     {
    21         printf("
    Failed to initialise winsock.");
    22         printf("
    Error Code : %d" , WSAGetLastError() );
    23         return 1;
    24     }
    25      
    26     //Ask user to select the device he wants to use
    27     printf("Enter the ip address : ");
    28     scanf("%s",ip_address);
    29     srcip.s_addr = inet_addr(ip_address);
    30  
    31     //Get mac addresses of the ip
    32     GetMacAddress(mac , srcip);
    33     printf("Selected device has mac address : %.2X-%.2X-%.2X-%.2X-%.2X-%.2X",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
    34     printf("
    ");
    35     printf("Press any key to exit
    ");
    36      
    37     _getch();
    38     return 0;
    39 }
    40  
    41 /*
    42     Get the mac address of a given ip
    43 */
    44 void GetMacAddress(unsigned char *mac , struct in_addr destip)
    45 {
    46     DWORD ret;
    47     IPAddr srcip;
    48     ULONG MacAddr[2];
    49     ULONG PhyAddrLen = 6;  /* default to length of six bytes */
    50     int i;
    51  
    52     srcip = 0;
    53  
    54     //Send an arp packet
    55     ret = SendARP((IPAddr) destip.S_un.S_addr , srcip , MacAddr , &PhyAddrLen);
    56      
    57     //Prepare the mac address
    58     if(PhyAddrLen)
    59     {
    60         BYTE *bMacAddr = (BYTE *) & MacAddr;
    61         for (i = 0; i < (int) PhyAddrLen; i++)
    62         {
    63             mac[i] = (char)bMacAddr[i];
    64         }
    65     }
    66 }
  • 相关阅读:
    @atcoder
    @atcoder
    @一句话题解
    @gym
    JS-try/catch方法判断字符串是否为json格式
    JS-find、filter、forEach、map
    JS-条件语句5准则
    JS-防抖与节流
    CSS-强制换行
    Elasticsearch-基础介绍及索引原理分析(转载)
  • 原文地址:https://www.cnblogs.com/frkang/p/3446976.html
Copyright © 2011-2022 走看看