CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

关于获取远程机器的MAC,求救........

楼主Kingron(单身走我路……)2002-04-28 00:39:14 在 Delphi / VCL组件开发及应用 提问

我现在正在研究如何获取远程机器的MAC,我们知道可以通过SNMP来做到,现在工作我已经作了很多了,可是有一个问题无法解决,现在给出我写好的部分代码,请大家帮助解决:  
  ///snmp.pas  
  {*****************************************************************************  
   
  Copyright   1992   -   1998   Microsoft   Corporation  
  Translate:Kingron  
  Mail:   Kingron@163.net  
  Web:   http://kingron.myetang.com  
   
  Module   Name:  
   
          snmp.h  
   
  Abstract:  
   
          Definitions   for   SNMP   development.  
   
  *****************************************************************************}  
  unit   SNMP;  
   
  interface  
   
  uses   windows;  
   
  {$IFNDEF   _INC_SNMP}  
  {$DEFINE   _INC_SNMP}  
  {$ENDIF}  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Type   Definitions                                                                                                           //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
  const  
      Inetmib1                     =   'Inetmib1.dll';  
      Igmpagnt                     =   'igmpagnt.dll';  
      snmpapidll                 =   'snmpapi.dll';  
   
  type  
      PByteAr=array[0..1000]   of   byte;  
   
  type  
      TAsnOctetString   =   packed   record  
          stream:   PByteAr;  
          length:   UINT;  
          dynamic:   BOOL;  
      end;  
   
      TAsnObjectIdentifier   =   packed   record  
          idLength:   UINT;   ///   Length   of   IDS  
          ids:   pointer;   ///   Pointer   to   oid   array  
      end;  
      PAsnObjectIdentifier   =   ^TAsnObjectIdentifier;  
   
      LONG   =   WORD;  
      TAsnInteger32   =   LONG;  
      TAsnUnsigned32   =   DWORD;  
      TAsnCounter64   =   ULARGE_INTEGER;  
      TAsnCounter32   =   TAsnUnsigned32;  
      TAsnGauge32   =   TAsnUnsigned32;  
      TAsnTimeticks   =   TAsnUnsigned32;  
      TAsnBits   =   TAsnOctetString;  
      TAsnSequence   =   TAsnOctetString;  
      TAsnImplicitSequence   =   TAsnOctetString;  
      TAsnIPAddress   =   TAsnOctetString;  
      TAsnNetworkAddress   =   TAsnOctetString;  
      TAsnDisplayString   =   TAsnOctetString;  
      TAsnOpaque   =   TAsnOctetString;  
   
      TAsnValue   =   packed   record  
          number:   TAsnInteger32;   //   ASN_INTEGER  
                                                        //   ASN_INTEGER32  
          unsigned32:   TAsnUnsigned32;   //   ASN_UNSIGNED32  
          counter64:   TAsnCounter64;   //   ASN_COUNTER64  
          Astring:   TAsnOctetString;   //   ASN_OCTETSTRING  
          bits:   TAsnBits;   //   ASN_BITS  
          Aobject:   TAsnObjectIdentifier;   //   ASN_OBJECTIDENTIFIER  
          sequence:   TAsnSequence;   //   ASN_SEQUENCE  
          address:   TAsnIPAddress;   //   ASN_IPADDRESS  
          counter:   TAsnCounter32;   //   ASN_COUNTER32  
          gauge:   TAsnGauge32;   //   ASN_GAUGE32  
          ticks:   TAsnTimeticks;   //   ASN_TIMETICKS  
          arbitrary:   TAsnOpaque;   //   ASN_OPAQUE  
      end;  
   
      TAsnAny   =   packed   record  
          asnType:   BYTE;  
          asnValue:   TAsnValue;  
      end;  
   
      TAsnObjectName   =   TAsnObjectIdentifier;  
      TAsnObjectSyntax   =   TAsnAny;  
   
      TSnmpVarBind   =   packed   record  
          name:   TAsnObjectName;  
          value:   TAsnObjectSyntax;  
      end;  
   
      TSnmpVarBindList   =   packed   record  
          list:   pointer;  
          len:   UINT;  
      end;  
   
   
  ////下面还有,请接着 问题点数:300、回复次数:33Top

1 楼Kingron(单身走我路……)回复于 2002-04-28 00:40:47 得分 0

{$IFNDEF   _INC_WINSNMP}  
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   ASN/BER   Base   Types                                                                                                                 //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
  const  
      ASN_UNIVERSAL           =   $00;  
      ASN_APPLICATION       =   $40;  
      ASN_CONTEXT               =   $80;  
      ASN_PRIVATE               =   $C0;  
   
      ASN_PRIMITIVE           =   $00;  
      ASN_CONSTRUCTOR       =   $20;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   PDU   Type   Values                                                                                                                       //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
      SNMP_PDU_GET             =   ASN_CONTEXT   or   ASN_CONSTRUCTOR   or   $0;  
      SNMP_PDU_GETNEXT     =   ASN_CONTEXT   or   ASN_CONSTRUCTOR   and   $1;  
      SNMP_PDU_RESPONSE   =   ASN_CONTEXT   or   ASN_CONSTRUCTOR   and   $2;  
      SNMP_PDU_SET             =   ASN_CONTEXT   or   ASN_CONSTRUCTOR   or   $3;  
      SNMP_PDU_V1TRAP       =   ASN_CONTEXT   or   ASN_CONSTRUCTOR   or   $4;  
      SNMP_PDU_GETBULK     =   ASN_CONTEXT   or   ASN_CONSTRUCTOR   or   $5;  
      SNMP_PDU_INFORM       =   ASN_CONTEXT   or   ASN_CONSTRUCTOR   or   $6;  
      SNMP_PDU_TRAP           =   ASN_CONTEXT   or   ASN_CONSTRUCTOR   or   $7;  
  {$ENDIF}   //   _INC_WINSNMP  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Simple   Syntax   Values                                                                                                   //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
  const  
      ASN_INTEGER               =   ASN_UNIVERSAL   or   ASN_PRIMITIVE   or   $02;  
      ASN_BITS                     =   ASN_UNIVERSAL   or   ASN_PRIMITIVE   or   $03;  
      ASN_OCTETSTRING       =   ASN_UNIVERSAL   or   ASN_PRIMITIVE   or   $04;  
      ASN_NULL                     =   ASN_UNIVERSAL   or   ASN_PRIMITIVE   or   $05;  
      ASN_OBJECTIDENTIFIER   =   ASN_UNIVERSAL   or   ASN_PRIMITIVE   or   $06;  
      ASN_INTEGER32           =   ASN_INTEGER;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Constructor   Syntax   Values                                                                                         //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
      ASN_SEQUENCE             =   ASN_UNIVERSAL   or   ASN_CONSTRUCTOR   or   $10;  
      ASN_SEQUENCEOF         =   ASN_SEQUENCE;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Application   Syntax   Values                                                                                         //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
      ASN_IPADDRESS           =   ASN_APPLICATION   or   ASN_PRIMITIVE   or   $00;  
      ASN_COUNTER32           =   ASN_APPLICATION   or   ASN_PRIMITIVE   or   $01;  
      ASN_GAUGE32               =   ASN_APPLICATION   or   ASN_PRIMITIVE   or   $02;  
      ASN_TIMETICKS           =   ASN_APPLICATION   or   ASN_PRIMITIVE   or   $03;  
      ASN_OPAQUE                 =   ASN_APPLICATION   or   ASN_PRIMITIVE   or   $04;  
      ASN_COUNTER64           =   ASN_APPLICATION   or   ASN_PRIMITIVE   or   $06;  
      ASN_UNSIGNED32         =   ASN_APPLICATION   or   ASN_PRIMITIVE   or   $07;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Exception   Conditions                                                                                                   //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
      SNMP_EXCEPTION_NOSUCHOBJECT   =   ASN_CONTEXT   or   ASN_PRIMITIVE   or   $00;  
      SNMP_EXCEPTION_NOSUCHINSTANCE   =   ASN_CONTEXT   or   ASN_PRIMITIVE   or   $01;  
      SNMP_EXCEPTION_ENDOFMIBVIEW   =   ASN_CONTEXT   or   ASN_PRIMITIVE   or   $02;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Request   Types   (used   in   SnmpExtensionQueryEx)                                                   //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
      SNMP_EXTENSION_GET   =   SNMP_PDU_GET;  
      SNMP_EXTENSION_GET_NEXT   =   SNMP_PDU_GETNEXT;  
      SNMP_EXTENSION_GET_BULK   =   SNMP_PDU_GETBULK;  
      SNMP_EXTENSION_SET_TEST   =   ASN_PRIVATE   or   ASN_CONSTRUCTOR   or   $0;  
      SNMP_EXTENSION_SET_COMMIT   =   SNMP_PDU_SET;  
      SNMP_EXTENSION_SET_UNDO   =   ASN_PRIVATE   or   ASN_CONSTRUCTOR   or   $1;  
      SNMP_EXTENSION_SET_CLEANUP   =   ASN_PRIVATE   or   ASN_CONSTRUCTOR   or   $2;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Error   Codes                                                                                                                     //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
      SNMP_ERRORSTATUS_NOERROR   =   0;  
      SNMP_ERRORSTATUS_TOOBIG   =   1;  
      SNMP_ERRORSTATUS_NOSUCHNAME   =   2;  
      SNMP_ERRORSTATUS_BADVALUE   =   3;  
      SNMP_ERRORSTATUS_READONLY   =   4;  
      SNMP_ERRORSTATUS_GENERR   =   5;  
      SNMP_ERRORSTATUS_NOACCESS   =   6;  
      SNMP_ERRORSTATUS_WRONGTYPE   =   7;  
      SNMP_ERRORSTATUS_WRONGLENGTH   =   8;  
      SNMP_ERRORSTATUS_WRONGENCODING   =   9;  
      SNMP_ERRORSTATUS_WRONGVALUE   =   10;  
      SNMP_ERRORSTATUS_NOCREATION   =   11;  
      SNMP_ERRORSTATUS_INCONSISTENTVALUE   =   12;  
      SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE   =   13;  
      SNMP_ERRORSTATUS_COMMITFAILED   =   14;  
      SNMP_ERRORSTATUS_UNDOFAILED   =   15;  
      SNMP_ERRORSTATUS_AUTHORIZATIONERROR   =   16;  
      SNMP_ERRORSTATUS_NOTWRITABLE   =   17;  
      SNMP_ERRORSTATUS_INCONSISTENTNAME   =   18;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMPv1   Trap   Types                                                                                                                   //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
      SNMP_GENERICTRAP_COLDSTART   =   0;  
      SNMP_GENERICTRAP_WARMSTART   =   1;  
      SNMP_GENERICTRAP_LINKDOWN   =   2;  
      SNMP_GENERICTRAP_LINKUP   =   3;  
      SNMP_GENERICTRAP_AUTHFAILURE   =   4;  
      SNMP_GENERICTRAP_EGPNEIGHLOSS   =   5;  
      SNMP_GENERICTRAP_ENTERSPECIFIC   =   6;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Access   Types                                                                                                                   //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
      SNMP_ACCESS_NONE     =   0;  
      SNMP_ACCESS_NOTIFY   =   1;  
      SNMP_ACCESS_READ_ONLY   =   2;  
      SNMP_ACCESS_READ_WRITE   =   3;  
      SNMP_ACCESS_READ_CREATE   =   4;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   API   Return   Code   Definitions                                                                                     //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
  type  
      SNMPAPI   =   integer;  
   
      //     SNMP_FUNC_TYPE   =   WINAPI;  
   
  const  
      SNMPAPI_NOERROR       =   TRUE;  
      SNMPAPI_ERROR           =   FALSE;  
   
  Top

2 楼Kingron(单身走我路……)回复于 2002-04-28 00:41:51 得分 0

///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Extension   API   Prototypes                                                                                           //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
  function   SnmpExtensionInit(dwTimeZeroReference:   DWORD;   hPollForTrapEvent:   HWND;  
      pFirstSupportedRegion:   TAsnObjectIdentifier):   Boolean;   stdcall;   external  
  Inetmib1   name   'SnmpExtensionInit';  
   
  function   SnmpExtensionInitEx(pNextSupportedRegion:   PAsnObjectIdentifier):  
      boolean;   stdcall;   external   Inetmib1   name   'SnmpExtensionInitEx';  
   
  function   SnmpExtensionQuery(bPduType:   BYTE;   pVarBindList:   TSnmpVarBindList;  
      pErrorStatus:   TAsnInteger32;   pErrorIndex:   TAsnInteger32):   boolean;   stdcall;  
  external   Inetmib1   name   'SnmpExtensionQuery';  
   
  {  
  ////   Under   Function   Can't   Import   becouse   the   DLL   File   Unknwon  
  function   SnmpExtensionQueryEx(nRequestType:   UINT;   nTransactionId:   UINT;  
      pVarBindList:   TSnmpVarBindList;   pContextInfo:   TAsnOctetString;   pErrorStatus:  
      TAsnInteger32;   pErrorIndex:   TAsnInteger32):   boolean;   stdcall;   external   Inetmib1  
  name   'SnmpExtensionQueryEx';  
  }  
   
  function   SnmpExtensionTrap(pEnterpriseOid:   TAsnObjectIdentifier;   pGenericTrapId:  
      TAsnInteger32;   pSpecificTrapId:   TAsnInteger32;   pTimeStamp:   TAsnTimeticks;  
      pVarBindList:   TSnmpVarBindList):   boolean;   stdcall;   external   Inetmib1   name  
  'SnmpExtensionTrap';  
   
  procedure   SnmpExtensionClose;   stdcall;   external   Igmpagnt   name   'SnmpExtensionClose';  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Extension   API   Type   Definitions                                                                               //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
  type  
      PFNSNMPEXTENSIONINIT   =   function(dwUpTimeReference:   DWORD;   phSubagentTrapEvent:  
          THANDLE;   pFirstSupportedRegion:   TAsnObjectIdentifier):   boolean;   stdcall;  
   
      PFNSNMPEXTENSIONINITEX   =   function(pNextSupportedRegion:   TAsnObjectIdentifier):  
          boolean;   stdcall;  
   
      PFNSNMPEXTENSIONQUERY   =   function(bPduType:   BYTE;   pVarBindList:   TSnmpVarBindList;  
          pErrorStatus:   TAsnInteger32;   pErrorIndex:   TAsnInteger32):   boolean;   stdcall;  
   
      PFNSNMPEXTENSIONQUERYEX   =   function(nRequestType:   UINT;   nTransactionId:   UINT;  
          pVarBindList:   TSnmpVarBindList;   pContextInfo:   TAsnOctetString;   pErrorStatus:  
          TAsnInteger32;   pErrorIndex:   TAsnInteger32):   boolean;   stdcall;  
   
      PFNSNMPEXTENSIONTRAP   =   function(pEnterpriseOid:   TAsnObjectIdentifier;  
          pGenericTrapId:   TAsnInteger32;   pSpecificTrapId:   TAsnInteger32;   pTimeStamp:  
          TAsnTimeticks;   pVarBindList:   TSnmpVarBindList):   boolean;   stdcall;  
   
      PFNSNMPEXTENSIONCLOSE   =   procedure;   stdcall;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   API   Prototypes                                                                                                               //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
  function   SnmpUtilOidCpy(pOidDst:   TAsnObjectIdentifier;   pOidSrc:   TAsnObjectIdentifier):  
      SNMPAPI;   stdcall   external   snmpapidll   name   'SnmpUtilOidCpy';  
   
  function   SnmpUtilOidAppend(pOidDst:   TAsnObjectIdentifier;   pOidSrc:  
      TAsnObjectIdentifier):   SNMPAPI;   stdcall;   external   snmpapidll   name  
  'SnmpUtilOidAppend';  
   
  function   SnmpUtilOidNCmp(pOid1:   TAsnObjectIdentifier;   pOid2:   TAsnObjectIdentifier;  
      nSubIds:   UINT):   SNMPAPI;   stdcall;   external   snmpapidll   name   'SnmpUtilOidNCmp';  
   
  function   SnmpUtilOidCmp(pOid1:   TAsnObjectIdentifier;   pOid2:   TAsnObjectIdentifier):  
      SNMPAPI;   stdcall;   external   snmpapidll   name   'SnmpUtilOidCmp';  
   
  procedure   SnmpUtilOidFree(pOid:   TAsnObjectIdentifier);   stdcall;   external   snmpapidll  
  name   'SnmpUtilOidFree';  
   
  function   SnmpUtilOctetsCmp(pOctets1:   TAsnOctetString;   pOctets2:   TAsnOctetString):  
      SNMPAPI;   stdcall;   external   snmpapidll   name   'SnmpUtilOctetsCmp';  
   
  function   SnmpUtilOctetsNCmp(pOctets1:   TAsnOctetString;   pOctets2:   TAsnOctetString;  
      nChars:   UINT):   SNMPAPI;   stdcall;   external   snmpapidll   name   'SnmpUtilOctetsNCmp';  
   
  function   SnmpUtilOctetsCpy(pOctetsDst:   TAsnOctetString;   pOctetsSrc:   TAsnOctetString):  
      SNMPAPI;   stdcall;   external   snmpapidll   name   'SnmpUtilOctetsCpy';  
   
  procedure   SnmpUtilOctetsFree(pOctets:   TAsnOctetString);   stdcall;   external   snmpapidll  
  name   'SnmpUtilOctetsFree';  
   
  function   SnmpUtilAsnAnyCpy(pAnyDst:   TAsnAny;   pAnySrc:   TAsnAny):   SNMPAPI;   stdcall;  
  external   snmpapidll   name   'SnmpUtilAsnAnyCpy';  
   
  procedure   SnmpUtilAsnAnyFree(pAny:   TAsnAny);   stdcall;   external   snmpapidll   name  
  'SnmpUtilAsnAnyFree';  
   
  function   SnmpUtilVarBindCpy(pVbDst:   TSnmpVarBind;   pVbSrc:   TSnmpVarBind):   SNMPAPI;  
  stdcall;   external   snmpapidll   name   'SnmpUtilVarBindCpy';  
   
  procedure   SnmpUtilVarBindFree(pVb:   TSnmpVarBind);   stdcall;   external   snmpapidll   name  
  'SnmpUtilVarBindFree';  
   
  Top

3 楼Kingron(单身走我路……)回复于 2002-04-28 00:42:03 得分 0

function   SnmpUtilVarBindListCpy(pVblDst:   TSnmpVarBindList;   pVblSrc:   TSnmpVarBindList):  
      SNMPAPI;   stdcall;   external   snmpapidll   name   'SnmpUtilVarBindListCpy';  
   
  procedure   SnmpUtilVarBindListFree(pVbl:   TSnmpVarBindList);   stdcall;   external   snmpapidll  
  name   'SnmpUtilVarBindListFree';  
   
  procedure   SnmpUtilMemFree(pMem:   pointer);   stdcall;   external   snmpapidll   name  
  'SnmpUtilMemFree';  
   
  function   SnmpUtilMemAlloc(nBytes:   UINT):   pointer;   stdcall;   external   snmpapidll   name  
  'SnmpUtilMemAlloc';  
   
  function   SnmpUtilMemReAlloc(pMem:   pointer;   nBytes:   UINT):   pointer;   stdcall;   external  
  snmpapidll   name   'SnmpUtilMemReAlloc';  
   
  function   SnmpUtilOidToA(Oid:   TAsnObjectIdentifier):   pchar;   stdcall;   external   snmpapidll  
  name   'SnmpUtilOidToA';  
   
  function   SnmpUtilIdsToA(Ids:   UINT;   IdLength:   UINT):   pchar;   stdcall;   external   snmpapidll  
  name   'SnmpUtilIdsToA';  
   
  procedure   SnmpUtilPrintOid(Oid:   TAsnObjectIdentifier);   stdcall;   external   snmpapidll  
  name   'SnmpUtilPrintOid';  
   
  procedure   SnmpUtilPrintAsnAny(pAny:   TAsnAny);   stdcall;   external   snmpapidll   name  
  'SnmpUtilPrintAsnAny';  
   
  function   SnmpSvcGetUptime:   DWORD;   stdcall;   external   snmpapidll   name  
  'SnmpSvcGetUptime';  
   
  procedure   SnmpSvcSetLogLevel(nLogLevel:   integer);   stdcall;   external   snmpapidll   name  
  'SnmpSvcSetLogLevel';  
   
  procedure   SnmpSvcSetLogType(nLogType:   integer);   stdcall;   external   snmpapidll   name  
  'SnmpSvcSetLogType';  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Debugging   Definitions                                                                                                 //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
  const  
      SNMP_LOG_SILENT       =   $0;  
      SNMP_LOG_FATAL         =   $1;  
      SNMP_LOG_ERROR         =   $2;  
      SNMP_LOG_WARNING     =   $3;  
      SNMP_LOG_TRACE         =   $4;  
      SNMP_LOG_VERBOSE     =   $5;  
   
      SNMP_OUTPUT_TO_CONSOLE   =   $1;  
      SNMP_OUTPUT_TO_LOGFILE   =   $2;  
      SNMP_OUTPUT_TO_EVENTLOG   =   $4;   //   no   longer   supported  
      SNMP_OUTPUT_TO_DEBUGGER   =   $8;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   SNMP   Debugging   Prototypes                                                                                                   //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
  procedure   SnmpUtilDbgPrint(nLogLevel:   integer;   //   see   log   levels   above...  
      szFormat:   pchar);   stdcall;   external   snmpapidll   name   'SnmpUtilDbgPrint';  
   
  {$IFDEF   DBG}  
  {$DEFINE   SNMPDBG(_x_)SnmpUtilDbgPrint   _x_}  
  {$ELSE}  
  {$DEFINE   SNMPDBG(_x_)}  
  {$ENDIF}  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   Miscellaneous   definitions                                                                                                   //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
  const  
  //   DEFINE_SIZEOF=(array)(sizeof(array)   /   sizeof((array)[0]))  
  //       DEFINE_OID(SubIdArray)   {DEFINE_SIZEOF(SubIdArray),(SubIdArray)}  
  //       DEFINE_NULLOID()   {0,NULL}  
  //       DEFINE_NULLOCTETS()   {NULL,0,FALSE}  
   
      DEFAULT_SNMP_PORT_UDP   =   161;  
      DEFAULT_SNMP_PORT_IPX   =   36879;  
      DEFAULT_SNMPTRAP_PORT_UDP   =   162;  
      DEFAULT_SNMPTRAP_PORT_IPX   =   36880;  
   
      SNMP_MAX_OID_LEN     =   128;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   API   Error   Code   Definitions                                                                                                 //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
      SNMP_MEM_ALLOC_ERROR   =   1;  
      SNMP_BERAPI_INVALID_LENGTH   =   10;  
      SNMP_BERAPI_INVALID_TAG   =   11;  
      SNMP_BERAPI_OVERFLOW   =   12;  
      SNMP_BERAPI_SHORT_BUFFER   =   13;  
      SNMP_BERAPI_INVALID_OBJELEM   =   14;  
      SNMP_PDUAPI_UNRECOGNIZED_PDU   =   20;  
      SNMP_PDUAPI_INVALID_ES   =   21;  
      SNMP_PDUAPI_INVALID_GT   =   22;  
      SNMP_AUTHAPI_INVALID_VERSION   =   30;  
      SNMP_AUTHAPI_INVALID_MSG_TYPE   =   31;  
      SNMP_AUTHAPI_TRIV_AUTH_FAILED   =   32;  
   
  ///////////////////////////////////////////////////////////////////////////////  
  //                                                                                                                                                       //  
  //   Support   for   old   definitions   (support   disabled   via   SNMPSTRICT)                           //  
  //                                                                                                                                                       //  
  ///////////////////////////////////////////////////////////////////////////////  
   
  {$IFNDEF   SNMPSTRICT}  
   
  const  
      ASN_RFC1155_IPADDRESS   =   ASN_IPADDRESS;  
      ASN_RFC1155_COUNTER   =   ASN_COUNTER32;  
      ASN_RFC1155_GAUGE   =   ASN_GAUGE32;  
      ASN_RFC1155_TIMETICKS   =   ASN_TIMETICKS;  
      ASN_RFC1155_OPAQUE   =   ASN_OPAQUE;  
      ASN_RFC1213_DISPSTRING   =   ASN_OCTETSTRING;  
   
      ASN_RFC1157_GETREQUEST   =   SNMP_PDU_GET;  
      ASN_RFC1157_GETNEXTREQUEST   =   SNMP_PDU_GETNEXT;  
      ASN_RFC1157_GETRESPONSE   =   SNMP_PDU_RESPONSE;  
      ASN_RFC1157_SETREQUEST   =   SNMP_PDU_SET;  
      ASN_RFC1157_TRAP     =   SNMP_PDU_V1TRAP;  
   
      ASN_CONTEXTSPECIFIC   =   ASN_CONTEXT;  
      ASN_PRIMATIVE           =   ASN_PRIMITIVE;  
   
  type  
      RFC1157VarBindList   =   TSnmpVarBindList;  
      RFC1157VarBind   =   TSnmpVarBind;  
      AsnInteger   =   TAsnInteger32;  
      AsnCounter   =   TAsnCounter32;  
      AsnGauge   =   TAsnGauge32;  
   
  {$ENDIF}   //   SNMPSTRICT  
   
  implementation  
   
  end.Top

4 楼dong163(再见理想)回复于 2002-04-28 00:59:56 得分 0

收藏了Top

5 楼Kingron(单身走我路……)回复于 2002-04-28 01:01:54 得分 0

///下面单元是获取远程机器MAC的,但是有错误,请指点一下....  
  ///测试调用代码:Caption:=GetRemoteMac('127.0.0.1');  
  unit   RemoteMac;  
   
  interface  
   
  uses   windows,   sysutils,   snmp,   Winsock;  
   
  function   GetRemoteMac(IP:   pchar):   pchar;  
   
  implementation  
   
  const  
      MIB_NULL                     :   TAsnObjectIdentifier   =   (idLength:   0;   ids:   nil);  
   
  var  
      OID_ifEntryType       :   array[0..9]   of   UINT   =   (1,   3,   6,   1,   2,   1,   2,   2,   1,   3);  
      OID_ifEntryNum         :   array[0..7]   of   UINT   =   (1,   3,   6,   1,   2,   1,   2,   1);  
      OID_ipMACEntAddr     :   array[0..9]   of   UINT   =   (1,   3,   6,   1,   2,   1,   2,   2,   1,   6);  
   
  function   GetRemoteMac(IP:   pchar):   pchar;  
  var  
      WinSockData               :   WSADATA;  
      MIB_ifMACEntAddr     :   TAsnObjectIdentifier;  
      MIB_ifEntryType       :   TAsnObjectIdentifier;  
      MIB_ifEntryNum         :   TAsnObjectIdentifier;  
      varBindList               :   TSnmpVarBindList;  
      varBind                       :   array[0..1]   of   TSnmpVarBind;  
      errorStatus               :   AsnInteger;  
      errorIndex                 :   AsnInteger;  
      ret                               :   boolean;  
      dtmp                             :   integer;  
      j                                   :   integer;  
      buff                             :   string;  
      TempEthernet             :   string[13];  
  begin  
      result   :=   'FF.FF.FF.FF';  
      j   :=   0;  
      errorStatus   :=   0;  
      errorIndex   :=   0;  
      if   WSAStartup(MakeWord(2,   0),   WinSockData)   <>   0   then  
      begin  
          MessageBox(0,   '程序需要Winsock2以上版本',   '信息',   MB_OK   +   MB_ICONINFORMATION);  
          exit;  
      end;  
      MIB_ifMACEntAddr.idLength   :=   sizeof(OID_ipMACEntAddr)   div   sizeof(UINT);  
      MIB_ifMACEntAddr.ids   :=   @OID_ipMACEntAddr;  
      MIB_ifEntryType.idLength   :=   sizeof(OID_ifEntryType)   div   sizeof(UINT);  
      MIB_ifEntryType.ids   :=   @OID_ifEntryType;  
      MIB_ifEntryNum.idLength   :=   sizeof(OID_ifEntryNum)   div   sizeof(UINT);  
      MIB_ifEntryNum.ids   :=   @OID_ifEntryNum;  
      varBindList.len   :=   2;  
  //     SetLength(varbindlist.List,   varBindList.len);  
      VarBindList.list   :=   @varBind;  
      varBind[0].name   :=   MIB_NULL;  
      varBind[1].name   :=   MIB_NULL;  
  //     varBindList.len   :=   1;   //   Only   retrieving   one   item  
      SnmpUtilOidCpy(varBind[0].name,   MIB_ifEntryNum);  
      SnmpExtensionQuery(ASN_RFC1157_GETNEXTREQUEST,   varBindList,  
          errorStatus,   errorIndex);  
      Buff   :=   Format('#   of   adapters   in   this   system   :   %d',  
          [varBind[0].value.asnValue.number]);  
      MessageBox(0,   pchar(Buff),   '信息',   MB_OK   +   MB_ICONINFORMATION);  
      varBindList.len   :=   2;  
   
  //   Copy   in   the   OID   of   ifType,   the   type   of   interface  
      SnmpUtilOidCpy(varBind[0].name,   MIB_ifEntryType);  
   
  //   Copy   in   the   OID   of   ifPhysAddress,   the   address   */  
      SnmpUtilOidCpy(varBind[1].name,   MIB_ifMACEntAddr);  
      repeat  
          ret   :=   SnmpExtensionQuery(ASN_RFC1157_GETNEXTREQUEST,   varBindList,  
              errorStatus,   errorIndex);  
          if   not   ret   then  
              ret   :=   True  
          else  
      {   Confirm   that   the   proper   type   has   been   returned   }  
              ret   :=   boolean(SnmpUtilOidNCmp(varBind[0].name,   MIB_ifEntryType,  
                  MIB_ifEntryType.idLength));  
          if   not   ret   then  
          begin  
              inc(j);  
              dtmp   :=   varBind[0].value.asnValue.number;  
              Buff   :=   Format('Interface   #%d   type   :   %d',   [j,   dtmp]);  
              MessageBox(0,   pchar(buff),   '信息',   MB_OK   +   MB_ICONINFORMATION);  
              //   Type   6   describes   ethernet   interfaces  
              if   dtmp   =   6   then  
              begin  
                //   Confirm   that   we   have   an   address   here  
                  ret   :=   boolean(SnmpUtilOidNCmp(varBind[1].name,   MIB_ifMACEntAddr,  
                      MIB_ifMACEntAddr.idLength));  
                  if   (not   ret)   and   (@varBind[1].value.asnValue.address.stream   <>   nil)   then  
                  begin  
                      if   (varBind[1].value.asnValue.address.stream[0]   =   $44)   and  
                          (varBind[1].value.asnValue.address.stream[1]   =   $45)   and  
                          (varBind[1].value.asnValue.address.stream[2]   =   $53)   and  
                          (varBind[1].value.asnValue.address.stream[3]   =   $54)   and  
                          (varBind[1].value.asnValue.address.stream[4]   =   $00)   then  
                      begin  
                          buff   :=   Format('Interface   #%i   is   a   DUN   adapter',   [j]);  
                          MessageBox(0,   pchar(buff),   '信息',   MB_OK   +   MB_ICONINFORMATION);  
                          continue;  
                      end;  
                      if   (varBind[1].value.asnValue.address.stream[0]   =   $00)   and  
                          (varBind[1].value.asnValue.address.stream[1]   =   $00)   and  
                          (varBind[1].value.asnValue.address.stream[2]   =   $00)   and  
                          (varBind[1].value.asnValue.address.stream[3]   =   $00)   and  
                          (varBind[1].value.asnValue.address.stream[4]   =   $00)   and  
                          (varBind[1].value.asnValue.address.stream[5]   =   $00)   then  
                      begin  
                        ///   Ignore   NULL   addresses   returned   by   other   network   interfaces  
                          Buff   :=   Format('Interface   #%i   is   a   NULL   address',   [j]);  
                          MessageBox(0,   pchar(Buff),   '信息',   MB_OK   +   MB_ICONINFORMATION);  
                          continue;  
                      end;  
                      TempEthernet   :=   Format('%02x%02x%02x%02x%02x%02x',  
                          [varBind[1].value.asnValue.address.stream[0],  
                          varBind[1].value.asnValue.address.stream[1],  
                              varBind[1].value.asnValue.address.stream[2],  
                              varBind[1].value.asnValue.address.stream[3],  
                              varBind[1].value.asnValue.address.stream[4],  
                              varBind[1].value.asnValue.address.stream[5]]);  
                      Buff   :=   Format('MAC   Address   of   interface   #%i:   %s',   [j,   TempEthernet]);  
                      MessageBox(0,   pchar(buff),   '信息',   MB_OK   +   MB_ICONINFORMATION);  
                  end;  
              end;  
          end;  
      until   ret;  
      SnmpUtilVarBindFree(varBind[0]);  
      SnmpUtilVarBindFree(varBind[1]);  
  end;  
   
  end.  
  Top

6 楼NetFair(2006,成功转型!从事市场工作!坚持技术市场两手抓,两手都要硬方针!)回复于 2002-04-28 01:34:09 得分 50

你为什么不看一下JEDI提供jclsysinfo.pas,里面有如何获得mac号,Top

7 楼Kingron(单身走我路……)回复于 2002-04-28 01:36:56 得分 0

哎,不是本地机器MAC,是远程机器MAC,支持TCP/IP的,不是LAN的。Top

8 楼xxmmmx(踢踏)回复于 2002-04-28 12:31:13 得分 0

/uuuuu..ppTop

9 楼hxshanji(洪兴山鸡)回复于 2002-04-28 12:55:19 得分 0

啊,老大的贴,帮不上忙。:(  
  只能收藏。。。。:)Top

10 楼CoolSlob()回复于 2002-04-28 13:07:36 得分 0

谢谢,收藏Top

11 楼ferrytang(欢迎你)回复于 2002-04-28 13:13:34 得分 50

www.myvc.net编程好望角征集斑竹  
  斑竹为admin的板块斑竹空缺中!  
  要求如下:  
  1.每天有一定的上网时间  
  2.对负责板块的技术有一定的解决问题的能力  
  3.有天天向上的学习精神  
   
  如发现本论坛由缺少的板块可留言给我  
  qq:13275013  
  mail:kayakat@sina.com  
  谢谢大家的捧场    
   
       
   
  欢迎你去www.myvc.net编程技术论坛  
  你可以在那里交流编程技术  
  注册用户请去以下帖子领分  
  http://www.csdn.net/expert/topic/682/682036.xml?temp=.5972101  
  http://www.csdn.net/expert/topic/681/681917.xml?temp=.5434992  
  http://www.csdn.net/expert/topic/676/676074.xml?temp=.9520075  
  http://www.csdn.net/expert/topic/641/641938.xml?temp=5.826968E-02Top

12 楼redwoodnymph(new)回复于 2002-04-28 13:34:20 得分 0

帮不上  
  收藏Top

13 楼firstshine(黑里透红)回复于 2002-04-28 16:42:10 得分 0

对这个问题思索中......Top

14 楼huang_2(叽叽喳喳)回复于 2002-05-02 08:41:46 得分 0

MAC是什么,苹果机?Top

15 楼shengs(你想猜赢我啊,边有禁鬼易,我猜!)回复于 2002-05-02 10:10:47 得分 0

我没有看你的代码,不如给个简单可行的代码你Top

16 楼chinakiss8848(似乎明白了)回复于 2002-05-02 12:02:03 得分 50

这有一个,你看看,我试了一下,如果对方机器没防火墙的话,可以反回完整的MAC及其他信息!  
  unit   Unit1;  
   
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs,   winsock,  
      StdCtrls;  
   
  const  
      WM_SOCK   =   WM_USER   +   1;           //自定义windows消息  
      UDPPORT   =   6767;                         //设定UDP端口号  
      NBTPORT   =   137;  
   
  type  
      TForm1   =   class(TForm)  
          Button1:   TButton;  
          ListBox1:   TListBox;  
          Edit1:   TEdit;  
          procedure   FormCreate(Sender:   TObject);  
          procedure   FormClose(Sender:   TObject;   var   Action:   TCloseAction);  
          procedure   Button1Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
          s:   TSocket;  
          addr:   TSockAddr;  
          FSockAddrIn   :   TSockAddrIn;   //利用消息实时获知UDP消息  
          procedure   ReadData(var   Message:   TMessage);   message   WM_SOCK;  
      public  
          {   Public   declarations   }  
          procedure   SendData(b:array   of   byte);  
   
          procedure   GetInfo(buffer:   Array   of   byte;len:integer);  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.DFM}  
   
  procedure   TForm1.FormCreate(Sender:   TObject);  
  var  
        TempWSAData:   TWSAData;  
        //optval:   integer;  
  begin  
            //   初始化SOCKET  
            if   WSAStartup($101,   TempWSAData)=1   then  
                  showmessage('StartUp   Error!');  
   
            s   :=   Socket(AF_INET,   SOCK_DGRAM,   0);  
            if   (s   =   INVALID_SOCKET)   then       //Socket创建失败  
            begin  
                      showmessage(inttostr(WSAGetLastError())+'     Socket创建失败');  
                      CloseSocket(s);  
            end;  
            //本机SockAddr绑定  
            addr.sin_family   :=   AF_INET;  
            addr.sin_addr.S_addr   :=   INADDR_ANY;  
            addr.sin_port   :=   htons(UDPPORT);  
            if   Bind(s,   addr,   sizeof(addr))   <>   0     then  
                begin  
                    showmessage('bind   fail');  
                end;  
            WSAAsyncSelect(s,   Form1.Handle   ,   WM_SOCK,   FD_READ);  
            //对方SockAddrIn设定  
            FSockAddrIn.SIn_Family   :=   AF_INET;  
            FSockAddrIn.SIn_Port   :=   htons(NBTPORT);  
  end;  
   
  procedure   TForm1.FormClose(Sender:   TObject;   var   Action:   TCloseAction);  
  begin  
          CloseSocket(s);  
  end;  
   
  procedure   TForm1.GetInfo(buffer:   Array   of   byte;len:integer);  
  var  
          str:string;  
          i,j,pos,name_num:   integer;  
  begin  
   
      name_num:=0;  
      for   i:=1   to   len   do  
      begin  
          if((buffer[i]=$21)and(buffer[i+1]=$00)and(buffer[i+2]=$01))  
          then  
          begin  
              name_num:=buffer[i+9];  
              break;  
          end;  
      end;  
      if   name_num=0   then   exit;  
      pos:=i+10;  
   
      str:='';  
      for   i:=pos   to   (pos+18*name_num-1)   do  
      begin  
          if   (((i-pos)mod   18)   =0)   then  
          begin  
              for   j:=0   to   14   do  
              begin  
                  if   trim(char(buffer[i+j]))=''   then   buffer[i+j]:=ord('   ');  
                  str:=str+char(buffer[i+j]);  
              end;  
          if   (buffer[i+16]   and   $80)=$80   then  
          begin  
              str:=str+format('<%x>',[buffer[i+15]]);  
              str:=str+'<GROUP>';  
              ListBox1.Items.Add(str);  
          end  
          else  
          begin  
              str:=str+format('<%x>',[buffer[i+15]]);  
              str:=str+'<UNIQUE>';  
              ListBox1.Items.Add(str);  
          end;  
          str:='';  
          end;  
      end;  
   
      for   i:=0   to   5   do  
      begin  
          str:=str+format('%.2x.',[buffer[i+pos+18*name_num]]);  
      end;  
      delete(str,length(str),1);  
      str:='MAC:'+str;  
      ListBox1.Items.Add(str);  
      ListBox1.Items.Add('------------------------------------------------------');  
      ListBox1.TopIndex   :=ListBox1.Items.count-1;  
   
  end;  
   
  procedure   TForm1.ReadData(var   Message:   TMessage);  
  var  
        buffer:   Array   [1..500]   of   byte;  
        len{,i}:   integer;  
        flen:   integer;  
        Event:   word;  
        value:   string;  
   
  begin  
            value:='';  
            flen:=sizeof(FSockAddrIn);  
            FSockAddrIn.SIn_Port   :=   htons(NBTPORT);  
            Event   :=   WSAGetSelectEvent(Message.LParam);  
            if   Event   =   FD_READ   then  
            begin  
                      len   :=   recvfrom(s,   buffer,   sizeof(buffer),   0,   FSockAddrIn,   flen);  
                      {for   i:=1   to   len   do   value:=value+format('%x',[buffer[i]]);  
                      ListBox1.items.add(value);  
                      value:='';  
                      for   i:=1   to   len   do   if   char(buffer[i])<>#0   then   value:=value+char(buffer[i]);  
                      ListBox1.items.add(value);}  
                      if   len<>   0   then   GetInfo(buffer,len);  
            end;  
  end;  
   
  procedure   TForm1.SendData(b:array   of   byte);  
  var  
        len:   integer;  
  begin  
   
            FSockAddrIn.SIn_Addr.S_addr   :=   inet_addr(pchar(edit1.text));  
            len   :=   sendto(s,   b[0],50,   0,   FSockAddrIn,   sizeof(FSockAddrIn));  
            //if   (WSAGetLastError()   <>   WSAEWOULDBLOCK)   and   (WSAGetLastError()   <>   0)   then   showmessage(inttostr(WSAGetLastError()));  
            if   len   =   SOCKET_ERROR   then  
                  showmessage('send   fail');  
            if   len   <>   50   then  
                  showmessage('Not   Send   all');  
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  const   NbtstatPacket:array[0..49]of   byte  
              =($0,$0,$0,$10,$0,$1,  
              $0,$0,$0,$0,$0,$0,$20,$43,$4b,  
              $41,$41,$41,$41,$41,$41,$41,$41,  
              $41,$41,$41,$41,$41,$41,$41,$41,  
              $41,$41,$41,$41,$41,$41,$41,$41,  
              $41,$41,$41,$41,$41,$41,$0,$0,$21,$0,$1);  
  begin  
   
      senddata(NbtstatPacket);  
   
  end;  
   
  end.  
   
  窗口加这三个控件:TButton;TListBox;TEdit;  
   
        Button1:   TButton;       ListBox1:   TListBox;         Edit1:   TEdit;  
   
  联上3个过程:  
          procedure   FormCreate(Sender:   TObject);  
          procedure   FormClose(Sender:   TObject;   var   Action:   TCloseAction);  
          procedure   Button1Click(Sender:   TObject);Top

17 楼Kingron(单身走我路……)回复于 2002-05-02 12:12:39 得分 0

谢谢你!  
  UDP的我知道.......现在问题是SNMP的.........Top

18 楼chinakiss8848(似乎明白了)回复于 2002-05-02 12:16:35 得分 0

哦,那一起研究吧:)Top

19 楼erp2(天涯劍)回复于 2002-05-03 10:36:52 得分 0

gzTop

20 楼DJ_KK(想了很久@恋了很久)回复于 2002-05-03 21:04:15 得分 0

to:楼上  
  可以介绍一下erp吗Top

21 楼sonicdater(事过境迁,除了技术,我什么都没有了)回复于 2002-05-03 21:38:53 得分 50

下面是当年   VB   版讨论的帖子,   你去看看:  
   
  用什么方法可以获得远程机的MAC?  
  http://www.csdn.net/expert/topic/540/540347.xml?temp=.3365595  
   
  里面的难点是   如果用户使用   proxy   ,如何   获得MAC   的问题。  
  帖子上没有解决这个问题。  
   
  最后,帖主是   通过写   在客户端   写   APPLET   来完成的   。  
   
  希望对你有帮助!    
  Top

22 楼xiaoxingchi(笨鸟)回复于 2002-05-04 09:32:03 得分 0

高手!Top

23 楼shengs(你想猜赢我啊,边有禁鬼易,我猜!)回复于 2002-05-04 11:38:41 得分 50

var  
      command:string;  
  begin  
  memo1.Lines.Clear   ;  
  if   fileexists(temp)   then  
      deletefile(temp);  
  case   radiogroup1.ItemIndex   of  
      0:   command:='command.com   /C   nbtstat   '+'-a   '+edit1.text+'   >   '+temp;  
      1:   command:='command.com   /C   nbtstat   '+'-A   '+edit2.text+'   >   '+temp;  
      2:   command:='command.com   /C   nbtstat   '+'-n     >   '+temp;  
    end;  
    winexec(pchar(command),sw_hide);  
  while   not   fileexists(temp)   do  
      sleep(3000);  
   
   
  try  
    memo1.lines.loadfromfile(temp);  
  end;Top

24 楼jockywin(好学友)回复于 2002-05-04 20:26:49 得分 0

very   goodTop

25 楼smhpnuaa(天将降大任于斯人也!)回复于 2002-05-04 20:54:14 得分 0

做个记号!Top

26 楼kindman(清风)回复于 2002-05-06 08:56:08 得分 0

U   P  
  *   *  
    -Top

27 楼make11111(孙少平)回复于 2002-05-06 15:08:05 得分 0

gz!Top

28 楼cbyhenan(chen)回复于 2002-05-06 23:25:25 得分 0

我来看看  
  不错啊Top

29 楼ztg(小夭)回复于 2002-05-08 10:12:23 得分 50

SendArp   来获取Top

30 楼lz_0618(lz_0618)回复于 2002-05-08 16:30:06 得分 0

学习Top

31 楼victorchen_2000(微力)回复于 2002-05-08 20:10:21 得分 0

不要那么迂腐嘛。  
  干脆自己写个ping   不就得到了。Top

32 楼Kingron(单身走我路……)回复于 2002-05-10 18:35:04 得分 0

用Ping可以得到远程机器的MAC吗?Top

33 楼Kingron(单身走我路……)回复于 2002-05-28 16:31:43 得分 0

哎,算了,结贴.........Top

相关问题

  • 知道远程机器的IP怎么取得其机器名和MAC地址?
  • 请问如何远程获取MAC地址
  • 关于远程获取
  • 局域网内如何通过机器的IP地址获取该机器的MAC地址?
  • 怎么样用js代码获取访问者机器的网卡mac地址?
  • 如何用WMI 来获取远程机器的目录以及文件,以及对文件进行删除操作!
  • 如何编程实现获取远程计算机的mac地址?局域网内的共享资源?
  • 客户端获取MAC,机器名等信息,请各位朋友测试一下
  • 请问,可以通过何种方式获取局域网内非同网段机器的网卡MAC地址?
  • 如何获取远程路径

关键词

  • .net
  • mac
  • snmp
  • 远程
  • fsockaddrin
  • listbox
  • buffer
  • nbtport
  • tform
  • tobject

得分解答快速导航

  • 帖主:Kingron
  • NetFair
  • ferrytang
  • chinakiss8848
  • sonicdater
  • shengs
  • ztg

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo