#pragma comment( lib, "Iphlpapi" )
#pragma comment( lib, "Ws2_32" )#include <windows.h>
#include <Iphlpapi.h>
#include <iostream.h>
#include <stdio.h>
int main( ) {IPAddr ip = 0;
unsigned char mac[6];
DWORD  error = 0;    DWORD dwSize = sizeof( ULONG) ;
    ip = inet_addr("192.168.0.1");
    //ip = inet_addr("xxx.xxx.xxx.xxx");
    error = SendARP(ip,0,(PULONG)&mac,&dwSize);
    printf( "%.2x", mac[4] );
                
    return 0;
}
为什么每次都为cc

解决方案 »

  1.   

    CString  CReportApp::getmac_one(int lana_num)
    {
    NCB ncb;
        UCHAR uRetCode;
    CString s1;
        memset( &ncb, 0, sizeof(ncb) );
        ncb.ncb_command = NCBRESET;
        ncb.ncb_lana_num = lana_num; 
    uRetCode = Netbios( &ncb );    
        memset( &ncb, 0, sizeof(ncb) );
        ncb.ncb_command = NCBASTAT;
        ncb.ncb_lana_num = lana_num;      strcpy( (char *)ncb.ncb_callname,  "*               " );
        ncb.ncb_buffer = (unsigned char *) &Adapter;
    ncb.ncb_length = sizeof(Adapter); uRetCode = Netbios( &ncb );
        
        if ( uRetCode == 0 ) {
    s1.Format( "%02X%02X%02X%02X%02X%02X", lana_num,
    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] );
        }
    return s1;
    }
    CString CReportApp::getmac()
    {
    CString s1;

    NCB ncb;
        UCHAR uRetCode;
    LANA_ENUM lana_enum;    memset( &ncb, 0, sizeof(ncb) );
        ncb.ncb_command = NCBENUM;    ncb.ncb_buffer = (unsigned char *) &lana_enum;
        ncb.ncb_length = sizeof(lana_enum);
    uRetCode = Netbios( &ncb );
    if ( uRetCode == 0 )
    {
    return (getmac_one( lana_enum.lana[0]));
    }
    s1="";
    return s1;
    }
      

  2.   

    可以去这里看一看,有完整的演示代码,绝对实用:
    http://www.aslike.net