谢谢各位帮我顶一下
解决方案 »
- 倒计时一个星期,散分
- 客户端封装,dll,Tclientsocket,onread事件,接收成功后再返回值。
- 谁能介绍一个读取网站源代码的方法来,最主要是占用CPU很少资源的.
- 如何实现udp广播
- 在TDateTimeField中只输入时间,为何移出焦点后,这个Field的日期部分总是1899-12-30?如何才能变为当前的日期?
- 我的毕业论文的摘要(中英对照版),大家看看,提提意见吧
- 用D6做的SOAP WEB Service,在apache for win9x/NT下可以用吗?怎么用?
- BDE error 8458 :Cannot load an IDAPI service library.是怎么回事?
- DELPHI2007第一次装好intraweb没有,第二次三次序列号不对!
- 请问:如何在delphi中动态配置BDE?
- SNMP编程?
- 一个基于snmp的通讯问题!(参与讨论的都有分,不够另外开贴给!!)
aiirii能不能把你做的例子让我参考一下
[email protected]
谢谢!
{$MINENUMSIZE 4}interfaceuses
Windows;{ SNMP Type Definitions }type
PAsnOctetString = ^TAsnOctetString;
TAsnOctetString = packed record
stream: PBYTE;
length: UINT;
dynam: BOOL;
end; PAsnObjectIdentifier = ^TAsnObjectIdentifier;
TAsnObjectIdentifier = packed record
idLength: UINT;
ids: PUINT;
end; PAsnInteger32 = ^TAsnInteger32;
TAsnInteger32 = Longint; PAsnUnsigned32 = ^TAsnUnsigned32;
TAsnUnsigned32 = ULONG; PTAsnCounter64 = ^TAsnCounter64;
TAsnCounter64 = ULARGE_INTEGER; PAsnCounter32 = ^TAsnCounter32;
TAsnCounter32 = TAsnUnsigned32; PAsnGauge32 = ^TAsnGauge32;
TAsnGauge32 = TAsnUnsigned32; PAsnTimeticks = ^TAsnTimeticks;
TAsnTimeticks = TAsnUnsigned32; PAsnBits = ^TAsnBits;
TAsnBits = TAsnOctetString; PAsnSequence = ^TAsnSequence;
TAsnSequence = TAsnOctetString; PAsnImplicitSequence = ^TAsnImplicitSequence;
TAsnImplicitSequence = TAsnOctetString; PAsnIPAddress = ^TAsnIPAddress;
TAsnIPAddress = TAsnOctetString; PAsnNetworkAddress = ^TAsnNetworkAddress;
TAsnNetworkAddress = TAsnOctetString; PAsnDisplayString = ^TAsnDisplayString;
TAsnDisplayString = TAsnOctetString; PAsnOpaque = ^TAsnOpaque;
TAsnOpaque = TAsnOctetString; PAsnAny = ^TAsnAny;
TAsnAny = record
asnType: BYTE;
case Integer of
0: (number: TAsnInteger32);
1: (unsigned32: TAsnUnsigned32);
2: (counter64: TAsnCounter64);
3: (str: TAsnOctetString);
4: (bits: TAsnBits);
5: (obj: TAsnObjectIdentifier);
6: (sequence: TAsnSequence);
7: (address: TAsnIPAddress);
8: (counter: TAsnCounter32);
9: (gauge: TAsnGauge32);
10: (ticks: TAsnTimeticks);
11: (arbitrary: TAsnOpaque);
end; TAsnObjectName = TAsnObjectIdentifier;
TAsnObjectSyntax = TAsnAny; PSnmpVarBind = ^TSnmpVarBind;
TSnmpVarBind = packed record
name: TAsnObjectName;
value: TAsnObjectSyntax;
end; PSnmpVarBindList = ^TSnmpVarBindList;
TSnmpVarBindList = packed record
list: PSnmpVarBind;
len: UINT;
end;{ 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 or $1);
SNMP_PDU_RESPONSE = (ASN_CONTEXT or ASN_CONSTRUCTOR or $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);{ SNMP Simple Syntax Values } 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_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 } SNMPAPI_NOERROR = BOOL(TRUE);
SNMPAPI_ERROR = BOOL(FALSE);{ SNMP Extension API Prototypes }function SnmpExtensionInit(dwUptimeReference: DWORD; phSubagentTrapEvent: PHandle;
pFirstSupportedRegion: PAsnObjectIdentifier): BOOL; stdcall;function SnmpExtensionInitEx(pNextSupportedRegion: PAsnObjectIdentifier): BOOL; stdcall;function SnmpExtensionQuery(bPduType: BYTE; pVarBindList: PSnmpVarBindList;
pErrorStatus, pErrorIndex: PAsnInteger32): BOOL; stdcall;function SnmpExtensionQueryEx(nRequestType, nTransactionId: UINT;
pVarBindList: PSnmpVarBindList; pContextInfo: PAsnOctetString;
pErrorStatus, pErrorIndex: PAsnInteger32): BOOL; stdcall;function SnmpExtensionTrap(pEnterpriseOid: PAsnObjectIdentifier;
pGenericTrapId, pSpecificTrapId: PAsnInteger32; pTimeStamp: PAsnTimeticks;
pVarBindList: PSnmpVarBindList): BOOL; stdcall;procedure SnmpExtensionClose; stdcall;{ SNMP Extension API Type Definitions }type
TSnmpExtensionInit = function(dwUptimeReference: DWORD; phSubagentTrapEvent: PHandle;
pFirstSupportedRegion: PAsnObjectIdentifier): BOOL; stdcall; TSnmpExtensionInitEx = function(pNextSupportedRegion: PAsnObjectIdentifier): BOOL; stdcall; TSnmpExtensionQuery = function(bPduType: BYTE; pVarBindList: PSnmpVarBindList;
pErrorStatus, pErrorIndex: PAsnInteger32): BOOL; stdcall; TSnmpExtensionQueryEx = function(nRequestType, nTransactionId: UINT;
pVarBindList: PSnmpVarBindList; pContextInfo: PAsnOctetString;
pErrorStatus, pErrorIndex: PAsnInteger32): BOOL; stdcall; TSnmpExtensionTrap = function(pEnterpriseOid: PAsnObjectIdentifier;
pGenericTrapId, pSpecificTrapId: PAsnInteger32; pTimeStamp: PAsnTimeticks;
pVarBindList: PSnmpVarBindList): BOOL; stdcall; TSnmpExtensionClose = procedure; stdcall;{ SNMP API Prototypes }function SnmpUtilOidCpy(pOidDst, pOidSrc: PAsnObjectIdentifier): Integer; stdcall;
function SnmpUtilOidAppend(pOidDst, pOidSrc: PAsnObjectIdentifier): Integer; stdcall;
function SnmpUtilOidNCmp(pOid1, pOid2: PAsnObjectIdentifier; nSubIds: UINT): Integer; stdcall;
function SnmpUtilOidCmp(pOid1, pOid2: PAsnObjectIdentifier): Integer; stdcall;
procedure SnmpUtilOidFree(pOid: PAsnObjectIdentifier); stdcall;
function SnmpUtilOctetsCmp(pOctets1, pOctets2: PAsnOctetString): Integer; stdcall;
function SnmpUtilOctetsNCmp(pOctets1, pOctets2: PAsnOctetString; nChars: UINT): Integer; stdcall;
function SnmpUtilOctetsCpy(pOctetsDst, pOctetsSrc: PAsnOctetString): Integer; stdcall;
procedure SnmpUtilOctetsFree(pOctets: PAsnOctetString); stdcall;
function SnmpUtilAsnAnyCpy(pAnyDst, pAnySrc: PAsnAny): Integer; stdcall;
procedure SnmpUtilAsnAnyFree(pAny: PAsnAny); stdcall;
function SnmpUtilVarBindCpy(pVbDst, pVbSrc: PSnmpVarBind): Integer; stdcall;
procedure SnmpUtilVarBindFree(pVb: PSnmpVarBind); stdcall;
function SnmpUtilVarBindListCpy(pVblDst, pVblSrc: PSnmpVarBindList): Integer; stdcall;
procedure SnmpUtilVarBindListFree(pVbl: PSnmpVarBindList); stdcall;
procedure SnmpUtilMemFree(pMem: Pointer); stdcall;
function SnmpUtilMemAlloc(nBytes: UINT): Pointer; stdcall;
function SnmpUtilMemReAlloc(pMem: Pointer; nBytes: UINT): Pointer; stdcall;
function SnmpUtilOidToA(Oid: PAsnObjectIdentifier): LPSTR; stdcall;
function SnmpUtilIdsToA(Ids: PUINT; IdLength: UINT): LPSTR; stdcall;
procedure SnmpUtilPrintOid(Oid: PAsnObjectIdentifier); stdcall;
procedure SnmpUtilPrintAsnAny(pAny: PAsnAny); stdcall;
function SnmpSvcGetUptime: DWORD; stdcall;
procedure SnmpSvcSetLogLevel(nLogLevel: Integer); stdcall;
procedure SnmpSvcSetLogType(nLogType: Integer); stdcall;
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;
SNMP_OUTPUT_TO_DEBUGGER = $8;{ Miscellaneous definitions } 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;implementationconst
miblib = 'inetmib1.dll'; //Import Library: User-defined.
snmpapi = 'snmpapi.dll';function SnmpExtensionInit; external miblib name 'SnmpExtensionInit';
function SnmpExtensionInitEx; external miblib name 'SnmpExtensionInitEx';
function SnmpExtensionQuery; external miblib name 'SnmpExtensionQuery';
function SnmpExtensionQueryEx; external miblib name 'SnmpExtensionQueryEx';
function SnmpExtensionTrap; external miblib name 'SnmpExtensionTrap';
procedure SnmpExtensionClose; external miblib name 'SnmpExtensionClose';function SnmpUtilOidCpy; external snmpapi name 'SnmpUtilOidCpy';
function SnmpUtilOidAppend; external snmpapi name 'SnmpUtilOidAppend';
function SnmpUtilOidNCmp; external snmpapi name 'SnmpUtilOidNCmp';
function SnmpUtilOidCmp; external snmpapi name 'SnmpUtilOidCmp';
procedure SnmpUtilOidFree; external snmpapi name 'SnmpUtilOidFree';
function SnmpUtilOctetsCmp; external snmpapi name 'SnmpUtilOctetsCmp';
function SnmpUtilOctetsNCmp; external snmpapi name 'SnmpUtilOctetsNCmp';
function SnmpUtilOctetsCpy; external snmpapi name 'SnmpUtilOctetsCpy';
procedure SnmpUtilOctetsFree; external snmpapi name 'SnmpUtilOctetsFree';
function SnmpUtilAsnAnyCpy; external snmpapi name 'SnmpUtilAsnAnyCpy';
procedure SnmpUtilAsnAnyFree; external snmpapi name 'SnmpUtilAsnAnyFree';
function SnmpUtilVarBindCpy; external snmpapi name 'SnmpUtilVarBindCpy';
procedure SnmpUtilVarBindFree; external snmpapi name 'SnmpUtilVarBindFree';
function SnmpUtilVarBindListCpy; external snmpapi name 'SnmpUtilVarBindListCpy';
procedure SnmpUtilVarBindListFree; external snmpapi name 'SnmpUtilVarBindListFree';
procedure SnmpUtilMemFree; external snmpapi name 'SnmpUtilMemFree';
function SnmpUtilMemAlloc; external snmpapi name 'SnmpUtilMemAlloc';
function SnmpUtilMemReAlloc; external snmpapi name 'SnmpUtilMemReAlloc';
function SnmpUtilOidToA; external snmpapi name 'SnmpUtilOidToA';
function SnmpUtilIdsToA; external snmpapi name 'SnmpUtilIdsToA';
procedure SnmpUtilPrintOid; external snmpapi name 'SnmpUtilPrintOid';
procedure SnmpUtilPrintAsnAny; external snmpapi name 'SnmpUtilPrintAsnAny';
function SnmpSvcGetUptime; external snmpapi name 'SnmpSvcGetUptime';
procedure SnmpSvcSetLogLevel; external snmpapi name 'SnmpSvcSetLogLevel';
procedure SnmpSvcSetLogType; external snmpapi name 'SnmpSvcSetLogType';end.
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, WinSock, Dialogs,
Snmp, ComCtrls, StdCtrls;type
TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FHostName: array[0..255] of Char;
WSAData: TWSAData;
procedure GetTcpUdpInfo(); //Get the tcp/udp info
function GetHost(local: Boolean; ipaddr: UINT): string;
function GetPort(port: UINT; proto: PChar): string;
public
{ Public declarations }
end; PTcpInfo = ^TTcpInfo;
TTcpInfo = packed record
prev: PTcpInfo;
next: PTcpInfo;
state: UINT;
localip: UINT;
localport: UINT;
remoteip: UINT;
remoteport: UINT;
end; PAsnObjectIdentifier = ^TAsnObjectIdentifier;
TAsnObjectIdentifier = packed record
idLength: UINT;
ids: PUINT;
end;
PIds = ^TIds;
TIds = array[0..9] of UINT;
const
TcpIdentifiers: TIds = (1, 3, 6, 1, 2, 1, 6, 13, 1, 0);
UdpIdentifiers: TIds = (1, 3, 6, 1, 2, 1, 7, 5, 1, 0);
TcpState: array[0..11] of string[13] = ('未知状态',
'已经结束',
'监听状态',
'SYN_SENT',
'SEN_RECEIVED',
'已经建立',
'FIN_WAIT',
'FIN_WAIT2',
'结束等待',
'正在结束',
'LAST_ACK',
'超时等待');
M_CREATESOCKETERROR = '创建Socket失败!';
M_TCPUDP = '双击获得详细信息';
var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.GetTcpUdpInfo(); //Get the tcp/udp info
var
TcpInfoTable, UdpInfoTable: TTcpInfo;
hTrapEvent: THandle;
hIdentifier, Oid: TAsnObjectIdentifier;
VarBindList: TSnmpVarBindList;
VarBind: TSnmpVarBind;
errorStatus, errorIndex: TAsnInteger32;
currentEntry, newEntry: PTcpInfo;
currentIndex: UINT;
localaddr, localport, remoteaddr, remoteport: string;
begin
if not SnmpExtensionInit(GetTickCount, @hTrapEvent, @hIdentifier) then Exit;
{ TCP connections }
FillChar(Oid, SizeOf(Oid), 0);
FillChar(VarBindList, SizeOf(VarBindList), 0);
FillChar(VarBind, SizeOf(VarBind), 0);
Oid.idLength := 10;
Oid.ids := @TcpIdentifiers;
SnmpUtilOidAppend(@VarBind.name, @Oid);
VarBind.value.asnType := ASN_NULL;
VarBindList.list := @VarBind;
VarBindList.len := 1;
FillChar(TcpInfoTable, SizeOf(TcpInfoTable), 0);
TcpInfoTable.prev := @TcpInfoTable;
TcpInfoTable.next := @TcpInfoTable;
currentIndex := 1;
currentEntry := @TcpInfoTable;
while True do
begin
if not SnmpExtensionQuery(SNMP_PDU_GETNEXT,
@VarBindList,
@errorStatus,
@errorIndex) then Exit;
if VarBind.name.idLength < 10 then Break;
if currentIndex <> PIds(VarBind.name.ids)^[9] then
begin
currentEntry := TcpInfoTable.next;
currentIndex := PIds(VarBind.name.ids)^[9];
end;
case currentIndex of
1: begin
newEntry := PTcpInfo(AllocMem(SizeOf(TTcpInfo)));
newEntry^.prev := currentEntry;
newEntry^.next := @TcpInfoTable;
currentEntry^.next := newEntry;
currentEntry := newEntry;
currentEntry^.state := VarBind.value.number;
end;
2: begin
currentEntry^.localip := (PUINT(VarBind.value.address.stream))^;
currentEntry := currentEntry^.next;
end;
3: begin
currentEntry^.localport := VarBind.value.number;
currentEntry := currentEntry^.next;
end;
4: begin
currentEntry^.remoteip := (PUINT(VarBind.value.address.stream))^;
currentEntry := currentEntry^.next;
end;
5: begin
currentEntry^.remoteport := VarBind.value.number;
currentEntry := currentEntry^.next;
end;
end;
end;
with listview1.Items do
begin
BeginUpdate;
Clear;
EndUpdate;
end;
currentEntry := TcpInfoTable.next;
while currentEntry <> @TcpInfoTable do
begin
localaddr := Format('%s', [GetHost(True, currentEntry^.localip)]);
localport := Format('%s',
[GetPort(currentEntry^.localport, 'tcp')]);
if currentEntry^.remoteip = 0 then
remoteaddr := Format('%s: %s',
[GetHost(False, currentEntry^.remoteip), '0'])
else
remoteaddr := Format('%s',
[GetHost(False, currentEntry^.remoteip)]); remoteport := Format('%s',
[GetPort(currentEntry^.remoteport, 'tcp')]);
with ListView1.Items.Add do
begin
ImageIndex := 0;
Caption := 'TCP';
SubItems.Add(localaddr);
SubItems.Add(localport);
SubItems.Add(remoteaddr);
if (currentEntry^.state = 2) then SubItems.Add('')
else SubItems.Add(remoteport);
SubItems.Add(TcpState[currentEntry^.state]);
end;
currentEntry := currentEntry^.next;
end;
{ UDP connections }
FillChar(Oid, SizeOf(Oid), 0);
FillChar(VarBindList, SizeOf(VarBindList), 0);
FillChar(VarBind, SizeOf(VarBind), 0);
Oid.idLength := 10;
Oid.ids := @UdpIdentifiers;
SnmpUtilOidAppend(@VarBind.name, @Oid);
VarBind.value.asnType := ASN_NULL;
VarBindList.list := @VarBind;
VarBindList.len := 1;
FillChar(UdpInfoTable, SizeOf(UdpInfoTable), 0);
UdpInfoTable.prev := @UdpInfoTable;
UdpInfoTable.next := @UdpInfoTable;
currentIndex := 1;
currentEntry := @UdpInfoTable;
while True do
begin
if not SnmpExtensionQuery(SNMP_PDU_GETNEXT,
@VarBindList,
@errorStatus,
@errorIndex) then Exit;
if VarBind.name.idLength < 10 then Break;
if currentIndex <> PIds(VarBind.name.ids)^[9] then
begin
currentEntry := UdpInfoTable.next;
currentIndex := PIds(VarBind.name.ids)^[9];
end;
case currentIndex of
1: begin
newEntry := PTcpInfo(AllocMem(SizeOf(TTcpInfo)));
newEntry^.prev := currentEntry;
newEntry^.next := @UdpInfoTable;
currentEntry^.next := newEntry;
currentEntry := newEntry;
currentEntry^.localip := (PUINT(VarBind.value.address.stream))^;
end;
2: begin
currentEntry^.localport := VarBind.value.number;
currentEntry := currentEntry^.next;
end;
end;
end;
currentEntry := UdpInfoTable.next;
while currentEntry <> @UdpInfoTable do
begin
localaddr := Format('%s',
[GetHost(True, currentEntry^.localip)]); localport := Format('%s', [GetPort(currentEntry^.localport, 'udp')]);
remoteaddr := '*.*.*.*: *';
with listview1.Items.Add do
begin
ImageIndex := 8;
Caption := 'UDP';
SubItems.Add(localaddr);
SubItems.Add(localport);
SubItems.Add(remoteaddr);
SubItems.Add('*');
SubItems.Add('');
end;
currentEntry := currentEntry^.next;
end;
end;
var
HostEnt: PHostEnt;
InAddr: TInAddr;
begin
if ipaddr = 0 then
begin
if (local) then
Result := FHostName
else
Result := '0.0.0.0';
end
else
if ipaddr = 16777343 then
begin
if local then
Result := FHostName
else
Result := 'localhost';
end
else
begin
if local then
Result := FHostName
else
begin
Application.ProcessMessages;
HostEnt := GetHostByAddr(@ipaddr, 4, PF_INET);
if HostEnt <> nil then
Result := HostEnt^.h_name
else
begin
InAddr.S_addr := ipaddr;
Result := Format('%d.%d.%d.%d',
[Byte(InAddr.s_un_b.s_b1),
Byte(InAddr.s_un_b.s_b2),
Byte(InAddr.s_un_b.s_b3),
Byte(InAddr.s_un_b.s_b4)]);
end;
end;
end;
end;function TForm1.GetPort(port: UINT; proto: PChar): string;
var
ServEnt: PServEnt;
begin
Application.ProcessMessages;
ServEnt := GetServByPort(htons(port), proto);
if ServEnt <> nil then
Result := ServEnt^.s_name
else
Result := IntToStr(port);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
GetTcpUdpInfo;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
if WSAStartup($0101, WSAData) <> 0 then begin
MessageDlg('不能初始化Socket!', mtError, [mbOK], 0);
caption := M_CREATESOCKETERROR;
end else
GetHostName(FHostName, SizeOf(FHostName));end;end.
get和getnext都有了
麻烦您把trap的也贴上吧
{$WEAKPACKAGEUNIT ON}
{$MINENUMSIZE 4}interfaceuses
Windows;(*$HPPEMIT '#include <snmp.h>'*)type
PAsnOctetString = ^TAsnOctetString;
TAsnOctetString = record
stream: PChar;
length: UINT;
dynamic_: Boolean;
end;
{$EXTERNALSYM TAsnOctetString} PAsnObjectIdentifier = ^TAsnObjectIdentifier;
TAsnObjectIdentifier = record
idLength: UINT;
ids: PUINT;
end;
{$EXTERNALSYM TAsnObjectIdentifier} TAsnInteger32 = LongInt;
{$EXTERNALSYM TAsnInteger32}
TAsnUnsigned32 = ULONG;
{$EXTERNALSYM TAsnUnsigned32}
TAsnCounter64 = ULARGE_INTEGER;
{$EXTERNALSYM TAsnCounter64}
TAsnCounter32 = TAsnUnsigned32;
{$EXTERNALSYM TAsnCounter32}
TAsnGauge32 = TAsnUnsigned32;
{$EXTERNALSYM TAsnGauge32}
TAsnTimeticks = TAsnUnsigned32;
{$EXTERNALSYM TAsnTimeticks}
TAsnBits = TAsnOctetString;
{$EXTERNALSYM TAsnBits}
TAsnSequence = TAsnOctetString;
{$EXTERNALSYM TAsnSequence}
TAsnImplicitSequence = TAsnOctetString;
{$EXTERNALSYM TAsnImplicitSequence}
TAsnIPAddress = TAsnOctetString;
{$EXTERNALSYM TAsnIPAddress}
TAsnNetworkAddress = TAsnOctetString;
{$EXTERNALSYM TAsnNetworkAddress}
TAsnDisplayString = TAsnOctetString;
{$EXTERNALSYM TAsnDisplayString}
TAsnOpaque = TAsnOctetString;
{$EXTERNALSYM TAsnOpaque} PAsnAny = ^TAsnAny;
TAsnAny = record
asnType: Byte;
case Integer of
0: (number: TAsnInteger32); // ASN_INTEGER, ASN_INTEGER32
1: (unsigned32: TAsnUnsigned32); // ASN_UNSIGNED32
2: (counter64: TAsnCounter64); // ASN_COUNTER64
3: (string_: TAsnOctetString); // ASN_OCTETSTRING
4: (bits: TAsnBits); // ASN_BITS
5: (object_: TAsnObjectIdentifier); // ASN_OBJECTIDENTIFIER
6: (sequence: TAsnSequence); // ASN_SEQUENCE
7: (address: TAsnIPAddress); // ASN_IPADDRESS
8: (counter: TAsnCounter32); // ASN_COUNTER32
9: (gauge: TAsnGauge32); // ASN_GAUGE32
10: (ticks: TAsnTimeticks); // ASN_TIMETICKS
11: (arbitrary: TAsnOpaque); // ASN_OPAQUE
end;
{$EXTERNALSYM TAsnAny} TAsnObjectName = TAsnObjectIdentifier;
{$EXTERNALSYM TAsnObjectName}
TAsnObjectSyntax = TAsnAny;
{$EXTERNALSYM TAsnObjectSyntax} PSnmpVarBind = ^TSnmpVarBind;
TSnmpVarBind = record
name: TAsnObjectName;
value: TAsnObjectSyntax;
end;
{$EXTERNALSYM TSnmpVarBind} PSnmpVarBindList = ^TSnmpVarBindList;
TSnmpVarBindList = record
list: PSnmpVarBind;
len: UINT;
end;
{$EXTERNALSYM TSnmpVarBindList}const{$IFNDEF _INC_WINSNMP}{ ASN/BER Base Types } ASN_UNIVERSAL = $00;
{$EXTERNALSYM ASN_UNIVERSAL}
ASN_APPLICATION = $40;
{$EXTERNALSYM ASN_APPLICATION}
ASN_CONTEXT = $80;
{$EXTERNALSYM ASN_CONTEXT}
ASN_PRIVATE = $C0;
{$EXTERNALSYM ASN_PRIVATE} ASN_PRIMITIVE = $00;
{$EXTERNALSYM ASN_PRIMITIVE}
ASN_CONSTRUCTOR = $20;
{$EXTERNALSYM ASN_CONSTRUCTOR}{ PDU Type Values } SNMP_PDU_GET = (ASN_CONTEXT or ASN_CONSTRUCTOR or $0);
{$EXTERNALSYM SNMP_PDU_GET}
SNMP_PDU_GETNEXT = (ASN_CONTEXT or ASN_CONSTRUCTOR or $1);
{$EXTERNALSYM SNMP_PDU_GETNEXT}
SNMP_PDU_RESPONSE = (ASN_CONTEXT or ASN_CONSTRUCTOR or $2);
{$EXTERNALSYM SNMP_PDU_RESPONSE}
SNMP_PDU_SET = (ASN_CONTEXT or ASN_CONSTRUCTOR or $3);
{$EXTERNALSYM SNMP_PDU_SET}
SNMP_PDU_V1TRAP = (ASN_CONTEXT or ASN_CONSTRUCTOR or $4);
{$EXTERNALSYM SNMP_PDU_V1TRAP}
SNMP_PDU_GETBULK = (ASN_CONTEXT or ASN_CONSTRUCTOR or $5);
{$EXTERNALSYM SNMP_PDU_GETBULK}
SNMP_PDU_INFORM = (ASN_CONTEXT or ASN_CONSTRUCTOR or $6);
{$EXTERNALSYM SNMP_PDU_INFORM}
SNMP_PDU_TRAP = (ASN_CONTEXT or ASN_CONSTRUCTOR or $7);
{$EXTERNALSYM SNMP_PDU_TRAP}{$ENDIF _INC_WINSNMP}{ SNMP Simple Syntax Values } ASN_INTEGER = (ASN_UNIVERSAL or ASN_PRIMITIVE or $02);
{$EXTERNALSYM ASN_INTEGER}
ASN_BITS = (ASN_UNIVERSAL or ASN_PRIMITIVE or $03);
{$EXTERNALSYM ASN_BITS}
ASN_OCTETSTRING = (ASN_UNIVERSAL or ASN_PRIMITIVE or $04);
{$EXTERNALSYM ASN_OCTETSTRING}
ASN_NULL = (ASN_UNIVERSAL or ASN_PRIMITIVE or $05);
{$EXTERNALSYM ASN_NULL}
ASN_OBJECTIDENTIFIER = (ASN_UNIVERSAL or ASN_PRIMITIVE or $06);
{$EXTERNALSYM ASN_OBJECTIDENTIFIER}
ASN_INTEGER32 = ASN_INTEGER;
{$EXTERNALSYM ASN_INTEGER32}{ SNMP Constructor Syntax Values } ASN_SEQUENCE = (ASN_UNIVERSAL or ASN_CONSTRUCTOR or $10);
{$EXTERNALSYM ASN_SEQUENCE}
ASN_SEQUENCEOF = ASN_SEQUENCE;
{$EXTERNALSYM ASN_SEQUENCEOF}{ SNMP Application Syntax Values } ASN_IPADDRESS = (ASN_APPLICATION or ASN_PRIMITIVE or $00);
{$EXTERNALSYM ASN_IPADDRESS}
ASN_COUNTER32 = (ASN_APPLICATION or ASN_PRIMITIVE or $01);
{$EXTERNALSYM ASN_COUNTER32}
ASN_GAUGE32 = (ASN_APPLICATION or ASN_PRIMITIVE or $02);
{$EXTERNALSYM ASN_GAUGE32}
ASN_TIMETICKS = (ASN_APPLICATION or ASN_PRIMITIVE or $03);
{$EXTERNALSYM ASN_TIMETICKS}
ASN_OPAQUE = (ASN_APPLICATION or ASN_PRIMITIVE or $04);
{$EXTERNALSYM ASN_OPAQUE}
ASN_COUNTER64 = (ASN_APPLICATION or ASN_PRIMITIVE or $06);
{$EXTERNALSYM ASN_COUNTER64}
ASN_UNSIGNED32 = (ASN_APPLICATION or ASN_PRIMITIVE or $07);
{$EXTERNALSYM ASN_UNSIGNED32}{ SNMP Exception Conditions } SNMP_EXCEPTION_NOSUCHOBJECT = (ASN_CONTEXT or ASN_PRIMITIVE or $00);
{$EXTERNALSYM SNMP_EXCEPTION_NOSUCHOBJECT}
SNMP_EXCEPTION_NOSUCHINSTANCE = (ASN_CONTEXT or ASN_PRIMITIVE or $01);
{$EXTERNALSYM SNMP_EXCEPTION_NOSUCHINSTANCE}
SNMP_EXCEPTION_ENDOFMIBVIEW = (ASN_CONTEXT or ASN_PRIMITIVE or $02);
{$EXTERNALSYM SNMP_EXCEPTION_ENDOFMIBVIEW}
{$EXTERNALSYM SNMP_EXTENSION_GET}
SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT;
{$EXTERNALSYM SNMP_EXTENSION_GET_NEXT}
SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK;
{$EXTERNALSYM SNMP_EXTENSION_GET_BULK}
SNMP_EXTENSION_SET_TEST = (ASN_PRIVATE or ASN_CONSTRUCTOR or $0);
{$EXTERNALSYM SNMP_EXTENSION_SET_TEST}
SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET;
{$EXTERNALSYM SNMP_EXTENSION_SET_COMMIT}
SNMP_EXTENSION_SET_UNDO = (ASN_PRIVATE or ASN_CONSTRUCTOR or $1);
{$EXTERNALSYM SNMP_EXTENSION_SET_UNDO}
SNMP_EXTENSION_SET_CLEANUP = (ASN_PRIVATE or ASN_CONSTRUCTOR or $2);
{$EXTERNALSYM SNMP_EXTENSION_SET_CLEANUP}{ SNMP Error Codes } SNMP_ERRORSTATUS_NOERROR = 0;
{$EXTERNALSYM SNMP_ERRORSTATUS_NOERROR}
SNMP_ERRORSTATUS_TOOBIG = 1;
{$EXTERNALSYM SNMP_ERRORSTATUS_TOOBIG}
SNMP_ERRORSTATUS_NOSUCHNAME = 2;
{$EXTERNALSYM SNMP_ERRORSTATUS_NOSUCHNAME}
SNMP_ERRORSTATUS_BADVALUE = 3;
{$EXTERNALSYM SNMP_ERRORSTATUS_BADVALUE}
SNMP_ERRORSTATUS_READONLY = 4;
{$EXTERNALSYM SNMP_ERRORSTATUS_READONLY}
SNMP_ERRORSTATUS_GENERR = 5;
{$EXTERNALSYM SNMP_ERRORSTATUS_GENERR}
SNMP_ERRORSTATUS_NOACCESS = 6;
{$EXTERNALSYM SNMP_ERRORSTATUS_NOACCESS}
SNMP_ERRORSTATUS_WRONGTYPE = 7;
{$EXTERNALSYM SNMP_ERRORSTATUS_WRONGTYPE}
SNMP_ERRORSTATUS_WRONGLENGTH = 8;
{$EXTERNALSYM SNMP_ERRORSTATUS_WRONGLENGTH}
SNMP_ERRORSTATUS_WRONGENCODING = 9;
{$EXTERNALSYM SNMP_ERRORSTATUS_WRONGENCODING}
SNMP_ERRORSTATUS_WRONGVALUE = 10;
{$EXTERNALSYM SNMP_ERRORSTATUS_WRONGVALUE}
SNMP_ERRORSTATUS_NOCREATION = 11;
{$EXTERNALSYM SNMP_ERRORSTATUS_NOCREATION}
SNMP_ERRORSTATUS_INCONSISTENTVALUE = 12;
{$EXTERNALSYM SNMP_ERRORSTATUS_INCONSISTENTVALUE}
SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE = 13;
{$EXTERNALSYM SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE}
SNMP_ERRORSTATUS_COMMITFAILED = 14;
{$EXTERNALSYM SNMP_ERRORSTATUS_COMMITFAILED}
SNMP_ERRORSTATUS_UNDOFAILED = 15;
{$EXTERNALSYM SNMP_ERRORSTATUS_UNDOFAILED}
SNMP_ERRORSTATUS_AUTHORIZATIONERROR = 16;
{$EXTERNALSYM SNMP_ERRORSTATUS_AUTHORIZATIONERROR}
SNMP_ERRORSTATUS_NOTWRITABLE = 17;
{$EXTERNALSYM SNMP_ERRORSTATUS_NOTWRITABLE}
SNMP_ERRORSTATUS_INCONSISTENTNAME = 18;
{$EXTERNALSYM SNMP_ERRORSTATUS_INCONSISTENTNAME}{ SNMPv1 Trap Types } SNMP_GENERICTRAP_COLDSTART = 0;
{$EXTERNALSYM SNMP_GENERICTRAP_COLDSTART}
SNMP_GENERICTRAP_WARMSTART = 1;
{$EXTERNALSYM SNMP_GENERICTRAP_WARMSTART}
SNMP_GENERICTRAP_LINKDOWN = 2;
{$EXTERNALSYM SNMP_GENERICTRAP_LINKDOWN}
SNMP_GENERICTRAP_LINKUP = 3;
{$EXTERNALSYM SNMP_GENERICTRAP_LINKUP}
SNMP_GENERICTRAP_AUTHFAILURE = 4;
{$EXTERNALSYM SNMP_GENERICTRAP_AUTHFAILURE}
SNMP_GENERICTRAP_EGPNEIGHLOSS = 5;
{$EXTERNALSYM SNMP_GENERICTRAP_EGPNEIGHLOSS}
SNMP_GENERICTRAP_ENTERSPECIFIC = 6;
{$EXTERNALSYM SNMP_GENERICTRAP_ENTERSPECIFIC}{ SNMP Access Types } SNMP_ACCESS_NONE = 0;
{$EXTERNALSYM SNMP_ACCESS_NONE}
SNMP_ACCESS_NOTIFY = 1;
{$EXTERNALSYM SNMP_ACCESS_NOTIFY}
SNMP_ACCESS_READ_ONLY = 2;
{$EXTERNALSYM SNMP_ACCESS_READ_ONLY}
SNMP_ACCESS_READ_WRITE = 3;
{$EXTERNALSYM SNMP_ACCESS_READ_WRITE}
SNMP_ACCESS_READ_CREATE = 4;
{$EXTERNALSYM SNMP_ACCESS_READ_CREATE}{ SNMP API Return Code Definitions }type
SNMPAPI = Integer;
{$EXTERNALSYM SNMPAPI}
const
SNMPAPI_NOERROR = True;
{$EXTERNALSYM SNMPAPI_NOERROR}
SNMPAPI_ERROR = False;
{$EXTERNALSYM SNMPAPI_ERROR}{ SNMP Extension API Type Definitions }type
TSnmpExtensionInit = function (dwUptimeReference: DWORD; var phSubagentTrapEvent: THandle;
var pFirstSupportedRegion: PAsnObjectIdentifier): Boolean; stdcall; TSnmpExtensionInitEx = function (var pNextSupportedRegion: PAsnObjectIdentifier): Boolean; stdcall; TSnmpExtensionMonitor = function (pAgentMgmtData: Pointer): Boolean; stdcall; TSnmpExtensionQuery = function (bPduType: Byte; var pVarBindList: TSnmpVarBindList;
var pErrorStatus: TAsnInteger32; var pErrorIndex: TAsnInteger32): Boolean; stdcall; TSnmpExtensionQueryEx = function (nRequestType: UINT; nTransactionId: UINT; var pVarBindList: PSnmpVarBindList;
var pContextInfo: PAsnOctetString; var pErrorStatus: TAsnInteger32; var pErrorIndex: TAsnInteger32): Boolean; stdcall; TSnmpExtensionTrap = function (pEnterpriseOid: PAsnObjectIdentifier; var pGenericTrapId: TAsnInteger32;
var pSpecificTrapId: TAsnInteger32; var pTimeStamp: TAsnTimeticks; var pVarBindList: PSnmpVarBindList): Boolean; stdcall; TSnmpExtensionClose = procedure; stdcall;
{$EXTERNALSYM SnmpUtilOidCpy}
function SnmpUtilOidAppend(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
{$EXTERNALSYM SnmpUtilOidAppend}
function SnmpUtilOidNCmp(pOid1, pOid2: PAsnObjectIdentifier; nSubIds: UINT): SNMPAPI; stdcall;
{$EXTERNALSYM SnmpUtilOidNCmp}
function SnmpUtilOidCmp(pOid1, pOid2: PAsnObjectIdentifier): SNMPAPI; stdcall;
{$EXTERNALSYM SnmpUtilOidCmp}
procedure SnmpUtilOidFree(pOid: TAsnObjectIdentifier); stdcall;
{$EXTERNALSYM SnmpUtilOidFree}
function SnmpUtilOctetsCmp(pOctets1, pOctets2: PAsnOctetString): SNMPAPI; stdcall;
{$EXTERNALSYM SnmpUtilOctetsCmp}
function SnmpUtilOctetsNCmp(pOctets1, pOctets2: PAsnOctetString; nChars: UINT): SNMPAPI; stdcall;
{$EXTERNALSYM SnmpUtilOctetsNCmp}
function SnmpUtilOctetsCpy(pOctetsDst, pOctetsSrc: PAsnOctetString): SNMPAPI; stdcall;
{$EXTERNALSYM SnmpUtilOctetsCpy}
procedure SnmpUtilOctetsFree(pOctets: PAsnOctetString); stdcall;
{$EXTERNALSYM SnmpUtilOctetsFree}
function SnmpUtilAsnAnyCpy(pAnyDst, pAnySrc: PAsnAny): SNMPAPI; stdcall;
{$EXTERNALSYM SnmpUtilAsnAnyCpy}
procedure SnmpUtilAsnAnyFree(pAny: PAsnAny); stdcall;
{$EXTERNALSYM SnmpUtilAsnAnyFree}
function SnmpUtilVarBindCpy(pVbDst: PSnmpVarBind; pVbSrc: PSnmpVarBind): SNMPAPI; stdcall;
{$EXTERNALSYM SnmpUtilVarBindCpy}
procedure SnmpUtilVarBindFree(pVb: PSnmpVarBind); stdcall;
{$EXTERNALSYM SnmpUtilVarBindFree}
function SnmpUtilVarBindListCpy(pVblDst: PSnmpVarBindList; pVblSrc: PSnmpVarBindList): SNMPAPI; stdcall;
{$EXTERNALSYM SnmpUtilVarBindListCpy}
procedure SnmpUtilVarBindListFree(pVbl: PSnmpVarBindList); stdcall;
{$EXTERNALSYM SnmpUtilVarBindListFree}
procedure SnmpUtilMemFree(pMem: Pointer); stdcall;
{$EXTERNALSYM SnmpUtilMemFree}
function SnmpUtilMemAlloc(nBytes: UINT): Pointer; stdcall;
{$EXTERNALSYM SnmpUtilMemAlloc}
function SnmpUtilMemReAlloc(pMem: Pointer; nBytes: UINT): Pointer; stdcall;
{$EXTERNALSYM SnmpUtilMemReAlloc}
function SnmpUtilOidToA(Oid: PAsnObjectIdentifier): PChar; stdcall;
{$EXTERNALSYM SnmpUtilOidToA}
function SnmpUtilIdsToA(Ids: PUINT; IdLength: UINT): PChar; stdcall;
{$EXTERNALSYM SnmpUtilIdsToA}
procedure SnmpUtilPrintOid(Oid: PAsnObjectIdentifier); stdcall;
{$EXTERNALSYM SnmpUtilPrintOid}
procedure SnmpUtilPrintAsnAny(pAny: PAsnAny); stdcall;
{$EXTERNALSYM SnmpUtilPrintAsnAny}
function SnmpSvcGetUptime: DWORD; stdcall;
{$EXTERNALSYM SnmpSvcGetUptime}
procedure SnmpSvcSetLogLevel(nLogLevel: Integer); stdcall;
{$EXTERNALSYM SnmpSvcSetLogLevel}
procedure SnmpSvcSetLogType(nLogType: Integer); stdcall;
{$EXTERNALSYM SnmpSvcSetLogType}{ SNMP Debugging Definitions }const
SNMP_LOG_SILENT = $0;
{$EXTERNALSYM SNMP_LOG_SILENT}
SNMP_LOG_FATAL = $1;
{$EXTERNALSYM SNMP_LOG_FATAL}
SNMP_LOG_ERROR = $2;
{$EXTERNALSYM SNMP_LOG_ERROR}
SNMP_LOG_WARNING = $3;
{$EXTERNALSYM SNMP_LOG_WARNING}
SNMP_LOG_TRACE = $4;
{$EXTERNALSYM SNMP_LOG_TRACE}
SNMP_LOG_VERBOSE = $5;
{$EXTERNALSYM SNMP_LOG_VERBOSE} SNMP_OUTPUT_TO_CONSOLE = $1;
{$EXTERNALSYM SNMP_OUTPUT_TO_CONSOLE}
SNMP_OUTPUT_TO_LOGFILE = $2;
{$EXTERNALSYM SNMP_OUTPUT_TO_LOGFILE}
SNMP_OUTPUT_TO_EVENTLOG = $4; // no longer supported
{$EXTERNALSYM SNMP_OUTPUT_TO_EVENTLOG}
SNMP_OUTPUT_TO_DEBUGGER = $8;
{$EXTERNALSYM SNMP_OUTPUT_TO_DEBUGGER}{ SNMP Debugging Prototypes }procedure SnmpUtilDbgPrint(nLogLevel: Integer; szFormat: PChar); stdcall;
{$EXTERNALSYM SnmpUtilDbgPrint}{ Miscellaneous definitions }const
DEFINE_NULLOID: TAsnObjectIdentifier = (idLength: 0; ids: nil);
{$EXTERNALSYM DEFINE_NULLOID}
DEFINE_NULLOCTETS: TAsnOctetString = (stream: nil; length: 0; dynamic_: False);
{$EXTERNALSYM DEFINE_NULLOCTETS} DEFAULT_SNMP_PORT_UDP = 161;
{$EXTERNALSYM DEFAULT_SNMP_PORT_UDP}
DEFAULT_SNMP_PORT_IPX = 36879;
{$EXTERNALSYM DEFAULT_SNMP_PORT_IPX}
DEFAULT_SNMPTRAP_PORT_UDP = 162;
{$EXTERNALSYM DEFAULT_SNMPTRAP_PORT_UDP}
DEFAULT_SNMPTRAP_PORT_IPX = 36880;
{$EXTERNALSYM DEFAULT_SNMPTRAP_PORT_IPX}
SNMP_MAX_OID_LEN = 128;
{$EXTERNALSYM SNMP_MAX_OID_LEN}{ API Error Code Definitions } SNMP_MEM_ALLOC_ERROR = 1;
{$EXTERNALSYM SNMP_MEM_ALLOC_ERROR}
SNMP_BERAPI_INVALID_LENGTH = 10;
{$EXTERNALSYM SNMP_BERAPI_INVALID_LENGTH}
SNMP_BERAPI_INVALID_TAG = 11;
{$EXTERNALSYM SNMP_BERAPI_INVALID_TAG}
SNMP_BERAPI_OVERFLOW = 12;
{$EXTERNALSYM SNMP_BERAPI_OVERFLOW}
SNMP_BERAPI_SHORT_BUFFER = 13;
{$EXTERNALSYM SNMP_BERAPI_SHORT_BUFFER}
SNMP_BERAPI_INVALID_OBJELEM = 14;
{$EXTERNALSYM SNMP_BERAPI_INVALID_OBJELEM}
SNMP_PDUAPI_UNRECOGNIZED_PDU = 20;
{$EXTERNALSYM SNMP_PDUAPI_UNRECOGNIZED_PDU}
SNMP_PDUAPI_INVALID_ES = 21;
{$EXTERNALSYM SNMP_PDUAPI_INVALID_ES}
SNMP_PDUAPI_INVALID_GT = 22;
{$EXTERNALSYM SNMP_PDUAPI_INVALID_GT}
SNMP_AUTHAPI_INVALID_VERSION = 30;
{$EXTERNALSYM SNMP_AUTHAPI_INVALID_VERSION}
SNMP_AUTHAPI_INVALID_MSG_TYPE = 31;
{$EXTERNALSYM SNMP_AUTHAPI_INVALID_MSG_TYPE}
SNMP_AUTHAPI_TRIV_AUTH_FAILED = 32;
{$EXTERNALSYM SNMP_AUTHAPI_TRIV_AUTH_FAILED}
{$EXTERNALSYM SNMP_oidcpy}
function SNMP_oidappend(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
{$EXTERNALSYM SNMP_oidappend}
function SNMP_oidncmp(pOid1, pOid2: PAsnObjectIdentifier; nSubIds: UINT): SNMPAPI; stdcall;
{$EXTERNALSYM SNMP_oidncmp}
function SNMP_oidcmp(pOid1, pOid2: PAsnObjectIdentifier): SNMPAPI; stdcall;
{$EXTERNALSYM SNMP_oidcmp}
procedure SNMP_oidfree(pOid: TAsnObjectIdentifier); stdcall;
{$EXTERNALSYM SNMP_oidfree}function SNMP_CopyVarBind(pVbDst: PSnmpVarBind; pVbSrc: PSnmpVarBind): SNMPAPI; stdcall;
{$EXTERNALSYM SNMP_CopyVarBind}
procedure SNMP_FreeVarBind(pVb: PSnmpVarBind); stdcall;
{$EXTERNALSYM SNMP_FreeVarBind}
function SNMP_CopyVarBindList(pVblDst: PSnmpVarBindList; pVblSrc: PSnmpVarBindList): SNMPAPI; stdcall;
{$EXTERNALSYM SNMP_CopyVarBindList}
procedure SNMP_FreeVarBindList(pVbl: PSnmpVarBindList); stdcall;
{$EXTERNALSYM SNMP_FreeVarBindList}procedure SNMP_printany(pAny: PAsnAny); stdcall;
{$EXTERNALSYM SNMP_printany}procedure SNMP_free(pMem: Pointer); stdcall;
{$EXTERNALSYM SNMP_free}
function SNMP_malloc(nBytes: UINT): Pointer; stdcall;
{$EXTERNALSYM SNMP_malloc}
function SNMP_realloc(pMem: Pointer; nBytes: UINT): Pointer; stdcall;
{$EXTERNALSYM SNMP_realloc}procedure SNMP_DBG_free(pMem: Pointer); stdcall;
{$EXTERNALSYM SNMP_DBG_free}
function SNMP_DBG_malloc(nBytes: UINT): Pointer; stdcall;
{$EXTERNALSYM SNMP_DBG_malloc}
function SNMP_DBG_realloc(pMem: Pointer; nBytes: UINT): Pointer; stdcall;
{$EXTERNALSYM SNMP_DBG_realloc}const
ASN_RFC1155_IPADDRESS = ASN_IPADDRESS;
{$EXTERNALSYM ASN_RFC1155_IPADDRESS}
ASN_RFC1155_COUNTER = ASN_COUNTER32;
{$EXTERNALSYM ASN_RFC1155_COUNTER}
ASN_RFC1155_GAUGE = ASN_GAUGE32;
{$EXTERNALSYM ASN_RFC1155_GAUGE}
ASN_RFC1155_TIMETICKS = ASN_TIMETICKS;
{$EXTERNALSYM ASN_RFC1155_TIMETICKS}
ASN_RFC1155_OPAQUE = ASN_OPAQUE;
{$EXTERNALSYM ASN_RFC1155_OPAQUE}
ASN_RFC1213_DISPSTRING = ASN_OCTETSTRING;
{$EXTERNALSYM ASN_RFC1213_DISPSTRING} ASN_RFC1157_GETREQUEST = SNMP_PDU_GET;
{$EXTERNALSYM ASN_RFC1157_GETREQUEST}
ASN_RFC1157_GETNEXTREQUEST = SNMP_PDU_GETNEXT;
{$EXTERNALSYM ASN_RFC1157_GETNEXTREQUEST}
ASN_RFC1157_GETRESPONSE = SNMP_PDU_RESPONSE;
{$EXTERNALSYM ASN_RFC1157_GETRESPONSE}
ASN_RFC1157_SETREQUEST = SNMP_PDU_SET;
{$EXTERNALSYM ASN_RFC1157_SETREQUEST}
ASN_RFC1157_TRAP = SNMP_PDU_V1TRAP;
{$EXTERNALSYM ASN_RFC1157_TRAP} ASN_CONTEXTSPECIFIC = ASN_CONTEXT;
{$EXTERNALSYM ASN_CONTEXTSPECIFIC}
ASN_PRIMATIVE = ASN_PRIMITIVE;
{$EXTERNALSYM ASN_PRIMATIVE}type
RFC1157VarBindList = TSnmpVarBindList;
{$EXTERNALSYM RFC1157VarBindList}
RFC1157VarBind = TSnmpVarBind;
{$EXTERNALSYM RFC1157VarBind}
TAsnInteger = TAsnInteger32;
{$EXTERNALSYM TAsnInteger}
TAsnCounter = TAsnCounter32;
{$EXTERNALSYM TAsnCounter}
TAsnGauge = TAsnGauge32;
{$EXTERNALSYM TAsnGauge}{$ENDIF SNMPSTRICT}{ SNMP Extension API Prototypes }var
SnmpExtensionInit: TSnmpExtensionInit;
{$EXTERNALSYM SnmpExtensionInit}
SnmpExtensionInitEx: TSnmpExtensionInitEx;
{$EXTERNALSYM SnmpExtensionInitEx}
SnmpExtensionMonitor: TSnmpExtensionMonitor;
{$EXTERNALSYM SnmpExtensionMonitor}
SnmpExtensionQuery: TSnmpExtensionQuery;
{$EXTERNALSYM SnmpExtensionQuery}
SnmpExtensionQueryEx: TSnmpExtensionQueryEx;
{$EXTERNALSYM SnmpExtensionQueryEx}
SnmpExtensionTrap: TSnmpExtensionTrap;
{$EXTERNALSYM SnmpExtensionTrap}
SnmpExtensionClose: TSnmpExtensionClose;
{$EXTERNALSYM SnmpExtensionClose}function SnmpExtensionLoaded: Boolean;
function LoadSnmpExtension(const LibName: string): Boolean;
function UnloadSnmpExtension: Boolean;implementationconst
snmpapilib = 'snmpapi.dll';var
LibHandle: THandle;function SnmpExtensionLoaded: Boolean;
begin
Result := LibHandle <> 0;
end;function LoadSnmpExtension(const LibName: string): Boolean;
begin
Result := UnloadSnmpExtension;
if Result then
begin
LibHandle := LoadLibrary(PChar(LibName));
Result := SnmpExtensionLoaded;
if Result then
begin
@SnmpExtensionInit := GetProcAddress(LibHandle, 'SnmpExtensionInit');
@SnmpExtensionInitEx := GetProcAddress(LibHandle, 'SnmpExtensionInitEx');
@SnmpExtensionMonitor := GetProcAddress(LibHandle, 'SnmpExtensionMonitor');
@SnmpExtensionQuery := GetProcAddress(LibHandle, 'SnmpExtensionQuery');
@SnmpExtensionQueryEx := GetProcAddress(LibHandle, 'SnmpExtensionQueryEx');
@SnmpExtensionTrap := GetProcAddress(LibHandle, 'SnmpExtensionTrap');
@SnmpExtensionClose := GetProcAddress(LibHandle, 'SnmpExtensionClose');
Result := Assigned(SnmpExtensionInit);
if not Result then
UnloadSnmpExtension;
end;
end;
end;function UnloadSnmpExtension: Boolean;
begin
if SnmpExtensionLoaded then
begin
Result := FreeLibrary(LibHandle);
LibHandle := 0;
@SnmpExtensionInit := nil;
@SnmpExtensionInitEx := nil;
@SnmpExtensionMonitor := nil;
@SnmpExtensionQuery := nil;
@SnmpExtensionQueryEx := nil;
@SnmpExtensionTrap := nil;
@SnmpExtensionClose := nil;
end
else
Result := True;
end;
function SnmpUtilOidAppend; external snmpapilib name 'SnmpUtilOidAppend';
function SnmpUtilOidNCmp; external snmpapilib name 'SnmpUtilOidNCmp';
function SnmpUtilOidCmp; external snmpapilib name 'SnmpUtilOidCmp';
procedure SnmpUtilOidFree; external snmpapilib name 'SnmpUtilOidFree';
function SnmpUtilOctetsCmp; external snmpapilib name 'SnmpUtilOctetsCmp';
function SnmpUtilOctetsNCmp; external snmpapilib name 'SnmpUtilOctetsNCmp';
function SnmpUtilOctetsCpy; external snmpapilib name 'SnmpUtilOctetsCpy';
procedure SnmpUtilOctetsFree; external snmpapilib name 'SnmpUtilOctetsFree';
function SnmpUtilAsnAnyCpy; external snmpapilib name 'SnmpUtilAsnAnyCpy';
procedure SnmpUtilAsnAnyFree; external snmpapilib name 'SnmpUtilAsnAnyFree';
function SnmpUtilVarBindCpy; external snmpapilib name 'SnmpUtilVarBindCpy';
procedure SnmpUtilVarBindFree; external snmpapilib name 'SnmpUtilVarBindFree';
function SnmpUtilVarBindListCpy; external snmpapilib name 'SnmpUtilVarBindListCpy';
procedure SnmpUtilVarBindListFree; external snmpapilib name 'SnmpUtilVarBindListFree';
procedure SnmpUtilMemFree; external snmpapilib name 'SnmpUtilMemFree';
function SnmpUtilMemAlloc; external snmpapilib name 'SnmpUtilMemAlloc';
function SnmpUtilMemReAlloc; external snmpapilib name 'SnmpUtilMemReAlloc';
function SnmpUtilOidToA; external snmpapilib name 'SnmpUtilOidToA';
function SnmpUtilIdsToA; external snmpapilib name 'SnmpUtilIdsToA';
procedure SnmpUtilPrintOid; external snmpapilib name 'SnmpUtilPrintOid';
procedure SnmpUtilPrintAsnAny; external snmpapilib name 'SnmpUtilPrintAsnAny';
function SnmpSvcGetUptime; external snmpapilib name 'SnmpSvcGetUptime';
procedure SnmpSvcSetLogLevel; external snmpapilib name 'SnmpSvcSetLogLevel';
procedure SnmpSvcSetLogType; external snmpapilib name 'SnmpSvcSetLogType';
procedure SnmpUtilDbgPrint; external snmpapilib name 'SnmpUtilDbgPrint';{$IFNDEF SNMPSTRICT}
function SNMP_oidcpy; external snmpapilib name 'SnmpUtilOidCpy';
function SNMP_oidappend; external snmpapilib name 'SnmpUtilOidAppend';
function SNMP_oidncmp; external snmpapilib name 'SnmpUtilOidNCmp';
function SNMP_oidcmp; external snmpapilib name 'SnmpUtilOidCmp';
procedure SNMP_oidfree; external snmpapilib name 'SnmpUtilOidFree';
function SNMP_CopyVarBind; external snmpapilib name 'SnmpUtilVarBindCpy';
procedure SNMP_FreeVarBind; external snmpapilib name 'SnmpUtilVarBindFree';
function SNMP_CopyVarBindList; external snmpapilib name 'SnmpUtilVarBindListCpy';
procedure SNMP_FreeVarBindList; external snmpapilib name 'SnmpUtilVarBindListFree';
procedure SNMP_printany; external snmpapilib name 'SnmpUtilPrintAsnAny';
procedure SNMP_free; external snmpapilib name 'SnmpUtilMemFree';
function SNMP_malloc; external snmpapilib name 'SnmpUtilMemAlloc';
function SNMP_realloc; external snmpapilib name 'SnmpUtilMemReAlloc';
procedure SNMP_DBG_free; external snmpapilib name 'SnmpUtilMemFree';
function SNMP_DBG_malloc; external snmpapilib name 'SnmpUtilMemAlloc';
function SNMP_DBG_realloc; external snmpapilib name 'SnmpUtilMemReAlloc';
{$ENDIF SNMPSTRICT}end.
准备结贴了,up有分谢谢大家