[DllImport("Iphlpapi.dll")]
private static unsafe extern int SendARP(Int32 dest,Int32 host,ref IntPtr mac,ref IntPtr length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);Int32 ldest= inet_addr("157.60.68.163");//目的地的ip
Int32 lhost= inet_addr("157.60.68.33");//本地的iptry
{
Byte[] macinfo=new Byte[6];
Int32 length=6;IntPtr mac=new IntPtr(macinfo[0]);
IntPtr len=new IntPtr(6);
int ii=SendARP(ldest,lhost, ref mac, ref len);Console.WriteLine("Mac Add:"+mac);
Console.WriteLine("length:"+len);
}
catch(Exception err)
{
Console.WriteLine(err);
}

解决方案 »

  1.   

    #include <windows.h>
       #include <wincon.h>
       #include <stdlib.h>
       #include <stdio.h>
       #include <time.h>   typedef struct _ASTAT_
       {      ADAPTER_STATUS adapt;
          NAME_BUFFER    NameBuff [30];   }ASTAT, * PASTAT;   ASTAT Adapter;   void main (void)
       {
          NCB Ncb;
          UCHAR uRetCode;
          char NetName[50];
          LANA_ENUM   lenum;
          int      i;      memset( &Ncb, 0, sizeof(Ncb) );
          Ncb.ncb_command = NCBENUM;
          Ncb.ncb_buffer = (UCHAR *)&lenum;
          Ncb.ncb_length = sizeof(lenum);
          uRetCode = Netbios( &Ncb );
          printf( "The NCBENUM return code is: 0x%x \n", uRetCode );      for(i=0; i < lenum.length ;i++)
          {
              memset( &Ncb, 0, sizeof(Ncb) );
              Ncb.ncb_command = NCBRESET;
              Ncb.ncb_lana_num = lenum.lana[i];          uRetCode = Netbios( &Ncb );
              printf( "The NCBRESET on LANA %d return code is: 0x%x \n",
                      lenum.lana[i], uRetCode );          memset( &Ncb, 0, sizeof (Ncb) );
              Ncb.ncb_command = NCBASTAT;
              Ncb.ncb_lana_num = lenum.lana[i];          strcpy( Ncb.ncb_callname,  "*               " );
              Ncb.ncb_buffer = (char *) &Adapter;
              Ncb.ncb_length = sizeof(Adapter);          uRetCode = Netbios( &Ncb );
              printf( "The NCBASTAT on LANA %d return code is: 0x%x \n",
                      lenum.lana[i], uRetCode );
              if ( uRetCode == 0 )
              {
                 printf( "The Ethernet Number on LANA %d is:
                         %02x%02x%02x%02x%02x%02x\n",
                lenum.lana[i],
                      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] );
              }
           }   }