计算机网络管理_第1页
计算机网络管理_第2页
计算机网络管理_第3页
计算机网络管理_第4页
计算机网络管理_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机网络管理-第6章Windows和SNMP第6章Windows和SNMP6.1WindowsSNMP服务的基本概念6.2SNMP应用程序接口6.3扩展代理的实现6.4陷入的实现6.5SNMP管理应用程序接口6.6网络管理应用程序设计SNMP在90年代初刚刚开始应用,那是Windows3.0/3.1/3.2是16位操作系统,微软还没有制定16位的网络管理标准;WindowsNT操作系统出现后,微软制定了远程过程调用和系统管理服务(SMS)标准,作为公司专用的网络管理平台.由于SNMP在TCP/IP网络上广泛应用,微软推出TCP/IP32位协议簇时包含了一个SNMP选件,可以安装在NT的服务器和工作站上,接收和发送SNMP请求/响应/陷入等.本章从windows中的SNMP服务的安装/测试/应用开发方面进行介绍.6.1.1Windows的SNMP服务WindowsNT是SNMP理想的开发平台,它支持SNMPV1管理站和代理功能,包括发送和接收陷入的功能.SNMP服务完全集成在windowsNT系统中,是NT软件包的一部分.(在安装NT时可选装)Windows95/98只支持SNMP的代理功能,不支持管理站的功能.(Windows95/98是被管的对象)服务的概念:是一种特殊的32位应用软件,它通过win32API与WindowsNT的服务控制管理器(SCM)接口,一般后台运行;它作用是监视硬件设备和其它的系统进程,提供访问外围设备和操作系统辅助功能的能力.(系统服务在系统启动或用户登录时可以自动运行,用户退出或系统关机停止运行.)WindowsSNMP的服务包括:SNMP代理服务程序snmp.exe和SNMP陷入服务程序SNMPTRAP.EXE;snmp.exe:接收SNMP请求报文,根据要求发送响应报文,能对SNMP报文进行语法分析,ASN.1和BER编码/译码SNMPtrap.exe:监听发送给NT主机的陷入报文,然后把其中的数据传送给SNMP管理API.(windows95/98没有陷入服务)6.1WindowsSNMP服务的基本概念Winsock控件对用户来说是不可见的,它提供了访问TCP和UDP网络服务的方便途径。MicrosoftAccess、VisualBasic、VisualC++或VisualFoxPro的开发人员都可使用它。为编写客户或服务器应用程序,不必了解TCP的细节或调用低级的WinsockAPIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。

如果创建客户应用程序,就必须知道服务器计算机名或者IP地址(RemoteHost属性),还要知道进行“侦听”的端口(RemotePort属性),然后调用Connect方法。如果创建服务器应用程序,就应设置一个收听端口(LocalPort属性)并调用Listen方法。当客户计算机需要连接时就会发生ConnectionRequest事件。为了完成连接,可调用ConnectionRequest事件内的Accept方法。

建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用SendData方法。当接收数据时会发生DataArrival事件。调用DataArrival事件内的GetData方法就可获取数据。SNMP服务和扩展代理WinSockAPI扩展代理DLL扩展代理DLL扩展代理DLLSNMP代理服务(SNMP.EXE)SNMP陷入服务(SNMPTRP.EXE)UDPPort162UDPPort161SNMPRequestSNMPResponseSNMPTrap扩展代理:SNMP代理服务是可扩展,允许动态地加入和减少MIB信息(程序员不必修改和重编译代理程序,只要添加和删除子代理就可以,该子代理称扩展代理,它能处理私有的MIB对象和特定的陷入条件:当SNMP代理服务接收到一个请求报文时,它就把变量绑定表的有关内容送给对应的扩展代理。扩展代理根据SNMP的规则对其私有的变量进行处理,形成响应信息)SNMP代理服务与SNMPAPI的交互作用SNMPAPI:是Microsoft为SNMP协议开发的应用程序接口,是一组用于构造SNMP服务,扩展服务和SNMP管理系统的库函数。上图表示了SNMP代理与SNMPAPI交互作用的过程。SNMP报文通过UDP/IP服务经WinSockAPI传送到SNMP代理,SNMP代理对报文译码,并进行认证检查,这个过程通过SNMPAPI(SNMPAPI.DLL交互作用,然后把变量绑定表的内容传送到有关扩展代理,经扩展代理处理形成响应信息又送回SNMP代理,再由SNMP代理装配成GetResponse报文,交给WinSockAPI送回发送请求的管理站)SNMPAPI(SNMPAPI..DLL)扩展代理(MIB-2).2.1扩展代理(LANManager).2.1扩展代理(MicrosoftWINS).2.1SNMP代理服务(SNMP.EXE)WinsockAPIGetRequestGetNextRequestSetRequestGetResponseTrapSNMP陷入服务与SNMPAPI的交互作用SNMP陷入:陷入服务监视从WinSockAPI传来的陷入报文,然后把陷入数据通过命名的管道传送给SNMP的管理API(MGNTAPI.DLL)。管理API是Microsoft为开发SNMP管理应用提供动态连接库,是SNMPAPI的一部分。管理应用程序从管理API接收数据,向API发送管理信息,并通过管理API与WinSock通信,实现网络的管理。SNMPAPI(SNMPAPI..DLL)SNMP管理应用SNMP陷入服务(SNMPREAP.EXE)SNMP管理API(MGNTAPI.DLL)WinsockAPIGetRequestGetNextRequestSetRequestGetResponsetTrapTrapTrap6.1.2SNMP服务的安装、配置和测试安装SNMP服务象安装WindowsNT其它服务一样,唯一要注意的是,它必须先‘安装TCP/IP协议。文件解释INETMIB1.DLL实现MIB-2(.2.1)扩展代理LMMIB2.DLL实现LANManagerMIB-2的扩展代理MGMTAPI.DLLSNMP管理APIMIB.BIN经过编译的MIB数据,由管理API使用SNMP.EXESNMP代理服务可执行程序SNMPTRAP.EXESNMP陷入服务可执行程序可安装的SNMP文件Microsoft的有关MIB模块“WindowsInternet名称服务(WINS)”:提供了动态复制数据库服务,此服务可以将NetBIOS名称注册并解析为网络上使用的IP地址。它启用服务器计算机来充当NetBIOS名称服务器并注册和解析网络上启用WINS客户的名称,就像TCP/IP上的NetBIOS标准中描述的一样动态主机配置协议(DHCP):是一种TCP/IP标准,旨在通过服务器计算机来集中管理网络上使用的IP地址和其他相关配置详细信息,以减少管理地址配置的复杂性。提供了DHCP服务,它允许服务器计算机履行DHCP服务器的职责并且如DHCP草案标准RFC2131中所述在您的网络上配置启用DHCP的客户机文件解释WINS.MIB实现WINS服务MIB(.1.311.1.2)的扩展代理WINSMIB.DLL实现WINS服务MIB(.1.311.1.2)的扩展代理DHECMIB.DDL实现DHEC服务MIB(.1.311.1.3)的扩展代理DHEC.MIB实现DHEC服务MIB(.1.311.1.3)的扩展代理INETSRV.MIBMicrosoftIISMIB(..7.2.1)FTP.MIBMicrosoftIISFTP服务器MIB(..7.2.1)HTTP.MIBMicrosoftIISHTTP服务器MIB(..7.3.1)Internet信息服务(IIS)是Web服务,它使得在Intranet或Internet上发布信息很容易GOPHERD.MIBMicrosoftIISGopher服务器MIB(..7.4.1)SNMP在WindowsNT中的安装和配置:[1]安装:1)登录到具有授权安装的帐户2)双击控制面板的网络图标3)点击服务4)点击添加5)点击网络服务队列中的SNMP服务选项6)确定开始安装(一般安装完毕,重新安装windowsNT的SP4以上版本)[2]配置:1)SNMP服务的属性中的代理:包含变量sysContact(联系人)、sysLocation(位置)、sysServices(服务)2)陷入:最多可以设置5个网络地址(IP地址,或IPX或DNS主机名)3)陷入报文的团体名:区分大小写,是为了发送需要认证的陷入报文用,如果不设置,则任何的团体名都是有效的.如果要使代理只接收某些特定的管理主机发来的陷入,则可以在“安全性”中键入对应主机地址。SNMP在WindowsWindows9X中的安装和配置:[1]SNMP的安装:[2]策略编辑器的安装[3]SNMP的配置:[4]修改注册表:[5]安装扩展代理DLL[6]测试SNMP服务[1]SNMP应用程序接口SNMPAPI由4部分组成:扩展API管理API实用程序API服务API在编写扩展API代理和SNMP管理应用程序都使用这些函数。[2]常用几个数据类型(在SNMP头文件SNMP.H中定义)Typedefstruct{BYTE *stream;//字节流指针 UINT length;//字节数 BOOL dynamic//如果动态分配存储器则为“true”}AsnOctetString6.2SNMP应用程序接口Typedefstruct{UNIT idlength//在oid中的整数个数 UINT *ids;//指向整数流的指针}AsnObjectIdentifierTypedefstruct{ BYTE asnTypeunion{ AsnInteger number; AsnOctetString String; ASnObjectIdentifier Object; AsnSequence sequence; AsnIpAddress Address AsnCounter Counter; AsnCauge gauge; AsnTimeticks ticks; AsnOpaque arbitrary;//(未知类) }}AsnAnyTypedefAsnObjectIdentifierAsnObjectname;TypedefAsnanyObjectSyntax;Typedefstructvb{AsnObjectName name; AsnObjectSyntax value;}RFC1157VarBindTypedefstruct{ RFC1157VarBind *list; UINT len;}RFC1157VarBindList6.2.1扩展API的概念扩展API是4个函数的集合。SNMP服务和扩展代理DLL使用这些函数交换数据。这些函数的原型在SNMP.H头文件中,函数代码用在每个扩展代理中。函数用途SnmpExtensionInit实现扩展代理初始化和MIB对象注册SnmpExtensionInitEx提供多个MIB对象注册SnmpExtensionQuery处理Get,GetNext,Set请求SnmpExtensionTrap从扩展代理收集Trap数据1)SnmpExtensionInit原型:BOOLWINAPISnmpExtensionInit( DWORDdwTimeZeroReference,//扩展代理存储的时间(百分之一秒) HANDLE*phPollForTrapEvent,//扩展代理发送Trap时获取的事件句柄

AsnObjectIdentifier*pSupportedView;//MIB子树的对象标识符 )2)SnmpExtensionInitEx原型:BOOLWINAPISnmpExtensionInitEx(

AsnObjectIdentifier*pSupportedView;//MIB子树的对象标识符 )3)SnmpExtensionQuery原型:BOOLWINAPISnmpExtensionQuery( BYTE nRequestType,//Get160,GetNext161,Set163 RFC1157VarBindList*pVariableBinding,//变量绑定表指针

AsnInteger *pnErrorStatus,//tooBig1,noSuchName2,badValue3,//readOnly4,genErr5 AsnInteger *pnErrorIndex;)4)SnmpExtensionTrap原型:BOOLWINAPISnmpExtensionTrap( AsnObjectIdentifier *penterprise, AsnInteger *pdwGenericTrap,//coldStart0,warmStart1,... AsnIngeter *pdwSpecificTrap, AsnTimeticks *pdwtimeStamp, RFC1157VarBindList *pVaribleBindings;)6.2.2管理API的概念管理API(MGMTAPI.DLL)是7个函数的集合。管理应用程序调用这些函数发送请求,接收响应和陷入。把OBJECTIDENTIFIER转换成AsnObjectIdentifierSnmpMgrStrToOid把AsnObjectIdentifier转换成OBJECTIDENTIFIERSnmpMgrOidToStr接收代理发来的Trap数据SnmpMgrGetTrap注册接收Trap的管理应用SnmpMgrTrapListen向代理发送Get,GetNext和Set请求SnmpMgrRequest关闭到代理的管套SnmpMgrClose打开到代理的管套SnmpMgrOpen用途函数MicrosoftSNMP管理API有一定的局限性:1)只能运行在Win32操作系统。2)陷入操作调用命名管道服务,而Windows95/98不支持命名管道,因此不能支持陷入服务。3)发出请求和接收响应都调用SnmpMgrRequest,而SnmpMgrRequest函数是同步操作。不支持异步操作。4)只能使用C,C++,因为两个头文件SNMP.H和MGMTAPI.H的很多数据类型是AsnAny(包含大量的union的结构),所以大量使用指针。Java和VB很难胜任。6.2.3实用程序API实用API包含14个函数,分为存储器分配和数据管理两个组,函数原型在SNMP.H中,函数代码在SNMPAPI.DLL和SNMPAPI.LIB中。函数用途SnmpUtilMenAlloc分配内存SnmpUtilMenREAlloc重新分配内存SnmpUtilMenFree释放内存SnmpUtilOidAppend把两个对象放在一起SnmpUtilOilCmp比较两个AsnObjectIdentifier对象的值SnmpUtilOidNCmp比较两个AsnObjectIdentifier对象的前N个值SnmpUtilOidCpy拷贝一个AsnObjectIdentifier对象SnmpUtilOidFree释放AsnObjectIdentifier对象分配的存储器SnmpUtilVarBindCpy拷贝一个RFC1157VarBind对象SnmpUtilVarBindFree释放RFC1157VarBind对象动态分配的存储器SnmpUtilVarBindListCpy拷贝一个RFC1157VarBindList对象SnmpUtilVarBindListFree释放RFC1157VarBindList对象动态分配的存储器SnmpUtilDbgPrint在LOG文件中写入Debug消息SnmpUtilPrintAsnAny在标准打印机存储在AsnAny对象中的值[1]存储器分配函数注意:1)SnmpUtilMen*函数为SNMP应用和管理API分配和回收存储器。2)扩展代理不能调用Win32的存储管理(LocalAlloc或GlobalAllo),也不能调用(编译支持)标准的C的存储管理(malloc,remalloc,free).3)为了防止存储器泄漏(由于分配在不同的堆中而不能释放),要求所有的动态的对象都使用SnmpUtilMen*分配在同一存储堆中。4)这些函数的参数和返回值与标准的C的存储管理函数(malloc,remalloc,free)相同,即返回的是指针而不是存储句柄。3个函数:1)SnmpUtilMenAlloc:该函数的作用是分配内存。例子:为一个字节串os分配内存的。AsnOctetStringos;charszString[]=“AnOctetString”;os.Length=lstrlen(szString);os.stream=(BYTE*)SnmpUtilMenAlloc(sizeof(BYTE)*os.Length);if(os.stream) mencpy(os.stream.szString,os.Length);2)SnmpUtilMenReAlloc:重新分配内存,即改变以前分配的存储对象的大小。该函数有两个参数:一个指针指向已有的存储对象;另一个参数表示存储对象的新的字节数。如:如果字节数增加,则分配存储器,反之如果字节数减少,则收回一部分存储器。重新分配成功时,返回新存储的对象指针,否则返回NULL。SnmpUtilMenReAlloc(VarBinds.list,sizeof(RFC1157VarBind)*VarBinds.len);3)SnmpUtilMenFree:这个函数的作用是释放内存。例子:AsnOctetStringos;os.Length=10;os.stream=(BYTE*)SnmpUtilMenAlloc(sizeof(BYTE)*os.Length);if(os.stream) { SnmpUtilMenFree(os.stream); os.stream=(BYTE*)NULL}[2]数据管理函数1)SnmpUtilOidAppend:把两个对象放在一起。SNMPAPISNMP_FUNC_TYPESnmpUtilOidAppend(AsnObjectIdentifier*pOidDst,//目标对象AsnObjectIdentifier*pOidSrc//加到目标对象的源对象);2)SnmpUtilOidCmp比较两个AsnObjectIdentifier对象值SNMPAPISNMP_FUNC_TYPESnmpUtilOidCmp(AsnObjectIdentifier*pOid1,AsnObjectIdentifier*pOid2);3)SnmpUtilOidNCmp比较两个AsnObjectIdentifier对象值前N子标识符SNMPAPISNMP_FUNC_TYPESnmpUtilOidNCmp(AsnObjectIdentifier*pOid1,AsnObjectIdentifier*pOid2,UINTnSubIds//需要比较的子标识符个数);4)SnmpUtilOidCpy:拷贝一个AsnObjectIdentifier对象,源拷贝到目标SNMPAPISNMP_FUNC_TYPESnmpUtilOidNCpy(AsnObjectIdentifier*pDstObjId,AsnObjectIdentifier*pSrcObjId);5)SnmpUtilOidFree:释放为AsnObjectIdentifier对象动态分配的存储器。VOIDSNMP_FUNC_TYPESnmpUtilOidFree(AsnObjectIdentifier*pOid);6)SnmpUtilVarBindCpy:拷贝一个SnmpVarBind对象。SNMPAPISNMP_FUNC_TYPESnmpUtilVarBindCpy(SnmpVarBind*pVbDst,SnmpVarBind*pVbSrc);7)SnmpUtilVarBindFre:释放为SnmpVarBind对象动态分配的存储器VOIDSNMP_FUNC_TYPESnmpUtilVarBindFree(SnmpVarBind*pVb);8)SnmpUtilVarBindListCpy:拷贝SnmpVarBindList对象SNMPAPISNMP_FUNC_TYPESnmpUtilVarBindListCpy(SnmpVarBindList*pVblDst,SnmpVarBindList*pVblSrc);9)SnmpUtilVarBindListFree:释放为SnmpVarBindList对象动态分配的存储器VOIDSNMP_FUNC_TYPESnmpUtilVarBindListFree(SnmpVarBindList*pVbl);10)SnmpUtilDbgPrint:在LOG文件中写入Debug信息BOOLWINAPISnmpUtilDbgPrint( INT nLogLevel,//错误级别LPSTRszFormat,//打印格式 … //其它打印参数);11)SnmpUtiPrintAsnAny:打印存储在AsnAny对象中的值。6.2.4服务API服务API(SNMPAPI.DLL)包含19个函数,这些函数用在SNMP.EXE中。在windows2000中正式公布见P181-182扩展API的4个函数用在扩展代理中。其中SnmpExtensionInit,SnmpExtensionQuery,SnmpExtensionTrap,应该出现在每个扩展代理中,另一个函数SnmpExtensionInitEx是任选,根据扩展代理的需要;每个扩展代理是通过这些函数与SNMP通信的,一般不需要执行其它的线程。6.3.1扩展代理动态连接库扩展代理被SNMP服务装入后,首先调“入口函数”,然后调用SnmpExtensionInit(或SnmpExtensionInitEx),完成必要的初始化工作。(例如:变量运行时间赋值;为缓冲区分配内存;进程,线程和事件生成等)1)DLL入口函数dwReason的值为DDL-PROCESS-ATTACH,则DllMain被调用后完成初始化dwReason的值为DDL-PROCESS-DEATTACH,则DllMain被调用后,进行卸载,完成关闭句柄,释放内存,通知主进程等。见书182-1832)初始化函数1DLL转入成功就调用SnmpExtensionInit函数进行初始化操作。见书P183-1846.3扩展代理的实现3)初始化函数2(提供多个MIB子树登记)如果DllMain和SnmpExtensionInit调用成功,SNMP服务就检查扩展代理中是否有SnmpExtensionInitEx函数.如果有,发付调用,把所有的扩展代理支持的MIB子树登记完毕.即直到该函数返回FALSE为止.见P185-186页4)SnmpExtensionQuery函数作用:处理请求报文(Get,GetNext,Set)报文中的变量绑定表,生成应答报文GetResponse中的变量绑定表,并决定错误状态。注意1:由于每个扩展代理只处理自己管理的那部分MIB变量,所以SNMP服务收到一个请求报文后,必须把变量绑定表的内容按照各个已装入的扩展代理的管辖范围分成若干部分,交给相应的扩展代理处理。注意2:ResolveVarBind处理变量绑定表对见P186-1876.3.2MIB数据库的实现MIB数据库文件(*.mib)组织成一维数组,每个元素是结构类型MIBVARS1)MIBVARS结构定义:Typedefstruct-MibVars{ AsnObjectIdentifier Oid;/*mib变量的对象子标识符*/ void *pStroage;/*本地存储器地址指针*/ void *ptempVar;/*缓冲变量指针,set命令用*/ BOOL fModified;/*指示变量的值是否被改变过*/ BYTE bType;/*变量类型*/ DWORD dwMinVal;/*变量最小值*/ DWORD dwMaxVal;/*变量最大值*/ UINT uAccess;/*访问模式*/ UINT (MinFunc)(UINT,struct-MibVars*,RFC1157VarBind*)/*实现变量操作函数,参数为:操作类型,变量元素 指针,变量绑定表指针*/ struct-MibVars MibNext;/*指向下一个指针*/}MIBVARS2)MIB的定义:见P188-1893)搜索MIBVARS的数据库见P190-1914)搜索的结果见P191-1926.4陷入的实现实现陷入的扩展函数是SnmpExtensionTrap.6.4.1陷入设计:1)代理的作用:检测陷入事件,收集陷入数据,发送陷入消息。2)单状态事件:用户击键,输入口令,SNMP报文认证失败等事件,通常用计数器跟踪单状态事件出现的次数,达到一定的门限即触发陷入。3)多状态事件:被监视的变量值在多个状态之间转换,例如:指示灯ON/OFF转换,主机电源开、关等,这类事件用整型变量指示其所处的状态。4)陷入决策问题:决定那些事件可以引起陷入;另外陷入的报文应该包含那些数据。如果陷入是基于MIB,则可陷入的事件就已经确定了,甚至可以写到文档中;如果基于企业的MIB,则要根据企业的标准或设备的特点决定那些事件可以引入陷入。(陷入一般分为不同的优先级)5)陷入的管理模式:陷入制导轮询(见P37):管理站启动或每隔一定时间,用Get操作轮询一遍所有代理,得到某些关键的信息或基本性能统计数据,得到数据后停止轮询;而代理进程负责在必要的时间向管理站报告异常事件,并通过陷入操作传给管理站,得到异常事件的报告,管理站可以查询有关的代理,以便得到更具体的信息,对事件的原因作进一步的分析。6)陷入的记录:记录信息;信息收集时可能有延迟。6.4.2扩展代理支持的陷入1)扩展代理实现陷入的两个函数:SnmpExtensionInit,SnmpExtensionTrap.例子(P194):主要功能:调用CreatEvent函数产生一个事件,用于支持的陷入句柄通知SNMP服务;如果产生事件失败则函数SnmpExtensionInit返回FALSE,表示无法初始化;函数SnmpExtensionTrap为一个陷入收集数据,这些数据来自全局变量,经该函数的参数传递给SNMP服务;静态变量fCleanUp的作用是区分两种操作:提供陷入数据或清除前次发送陷入占用的缓冲区。6.4.3陷入检测陷入检测主要包括:用什么检测陷入和怎样检测陷入。1)事件检测和数据收集扩展代理完成事件检测和数据收集外部进程完成事件检测,扩展代理完成数据收集扩展代理完成事件检测,外部进程完成数据收集,然后通过进程间通信机制把数据传送给扩展代理。外部进程完成事件检测和数据收集,然后通过进程间通信机制把数据传送给扩展代理。2)事件检测方法:通常的检测方法是主动轮询。扩展代理生成一个线程,经常检查特殊条件是否出现,检测到一个事件后就收集有关数据,并通知扩展代理发送陷入。主动轮询:由SetTimer或SetWaitableTimer生成的定时器,扩展代理在一定时间间隔上检查陷入事件。(可能会有延迟,轮询信息可能占用大量的网络带宽,影响正常的网络通信)被动等待:有一种触发机制,在可陷入事件时由监视线程发出通知。唤醒扩展代理发送陷入报文。(必须支持通知机制)Microsoft的管理应用程序接口(MGMTAPI.DLL)有7各函数它们的功能见P177.6.5.1MicrosoftMIB编译器:MicrosoftMIB编译器MIBCC.EXE是支持管理应用的附属工具,它的作用是把人工可读的数据格式,产生二进制文件MIB.BIN,由管理应用程序使用。其基本格式见P197-198.6.5.2管理API头文件1)头文件:管理API使用的常数和数据类型包含在头文件MGMTAPI.H中:#include<snmp.h>#include<winsock.h>#ifdef–cplusplus…#endif6.5SNMP管理应用程序接口2)数据类型定义:Typedefstruct–SNMP_MGR_SESSION{ SockDesc fd;//由WinsockAPI返回的网络管套描述符 struct sockaddrdestAddr,//网络连接的远方地址 LPSTR community,//团体名 INT timeout,//打开管套或等待响应超值 INT retries,//重新发送次数 AsnInteger requestID,//请求标识 char recvBuf[RECVBUFSIZE],//用于存储响应报 文的缓冲区 }SNMP-MGR-SESSION,*LPSNMP-MGR-SESSION; 6.5.3管理API功能管理API由7个函数组成:1)SnmpMgrOpen:在发送请求之前调用该函数,打开与SNMP代理的连接。LPSNMP_MGR_SESSIONSNMP_FUNC_TYPESnmpMgrOpen(INLPSTRlpAgentAddress,//Name/addressoftargetagentINLPSTRlpAgentCommunity,//CommunityfortargetagentININTnTimeOut,//Commtime-outinmillisecondsININTnRetries//Commtime-out/retrycount);如果建立连接成功,函数返回指针LPSNMP_MGR_SESSION结构指针;如果失败,返回空指针。2)SnmpMgrClose:这个函数关闭到SNMP代理的连接管套BOOLSNMP_FUNC_TYPESnmpMgrClose(INLPSNMP_MGR_SESSIONsession//SNMPsessionpointer);如果连接关闭,该函数返回TRUE,否则返回FALSE.3)SnmpMgrRequest:用这个函数可以发送Get,GetNext和Set请求报文。该函数是异步操作,在接收到响应或超时后才返回结果。SNMPAPISNMP_FUNC_TYPESnmpMgrRequest( LPSNMP_MGR_SESSIONsession,//SNMPsessionpointerINBYTErequestType,//Get,GetNext,orSetINOUTRFC1157VarBindList*variableBindings,//Variblebindings AsnInteger*errorStatus,//Resulterrorstatus AsnInteger*errorIndex//Resulterrorindex);如果请求成功,函数返回TRUE,并接受到响应报文;否则返回FALSE。注意:P176typedefAsnObjectIdentifierAsnObjectName;typedefAsnAnyAsnObjectSyntax;4)SnmpMgrStrToOid:该函数利用MIB.BIN中的数据把对象标识符转变成等价的AsnObjectIdentifier类型。函数的原型是:BOOLSNMP_FUNC_TYPESnmpMgrStrToOid( LPSTRstring,//OIDstringtobeconverted AsnObjectIdentifier*oid//OIDinternalepresentation);例如:设:*pString=“system.sysdescr”,或“..”,或“..2.1.system.sysDescr”则snmpMgrStrToOid(pString,&oid),则结果是:iod.idlength=9;oid.ids=1361211105)SnmpMgrOidToStr:该函数利用MIB.BIN中的数据把AsnObjectIdentifier类型转变成等价对象标识符类型。函数的原型是:SnmpMgrOidToStr( AsnObjectIdentifier*oid,//OIDtobeconverted LPSTRstring//OIDstringrepresentation);例如:设:iod.idlength=9;oid.ids=136121110则snmpMgrOidToStr(&oid,pString),则结果是:*pString=“system.sysdescr”6)SnmpMgrGetTrap:SNMP接收的陷入数据都交给

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论