Net-SNMP是线程安全的吗
原文地址 : http://www.net-snmp.org/wiki/index.php/FAQ:General_19
Net-SNMP是线程安全的吗?
确切的说,不是。不过呢,在多线程管理的应用进程中是能够使用这个链接库的。这一点在REDMAE文件中已经有过详细的叙述。线程(以标准方式封装和发布的),可以概括为下列几点:
1、在激活任何线程之前调用“snmp_sess_init()”函数。
这个函数进行MIB的读和解析(这个过程不是线程安全的),也为后来的使用而准备一个会话结构体。
2、使用snmp_sess_open()函数打开一个SNMP会话,此函数返回一个不透明的会话地址,这个地址本质上独立于任何其它的会话(不考虑线程的话)。
3、链接库里面没有使用资源锁,这部分应该是应用进程的事儿。
Net-SNMP代理不是为多线程而设计的。如果把代理库嵌入到一个进程的副代理线程中,并且所有和SNMP相关的活动(包括创建陷阱和解析MIB)都由这一个线程单独来完成,那么会是安全的。
命令行工具被封装成了Net-SNMP的一部分来发布,其实它是一个简单的单线程应用程序,并且不是为多线程设计的。适应线程的模型留给学生做练习。
不幸的是,SNMPv3的支持和线程的支持是同时添加的,并且这两件事是平行的发生的,之后再也没有进行过验证多线程下SNMPv3支持的正确性。这样看起来在SNMPv3情况下并不是线程安全的。
翻译:郝峰波
mail : fengbohello@qq.com
Net-SNMP是线程安全的吗的更多相关文章
- python并发获取snmp信息及性能测试
python & snmp 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库.网上有较多的关于两个库的例子. 本文重点在于如何并发的获取 ...
- python通过snmp协议运用多线程获取多台主机网卡信息,写入数据库
#-*- coding:utf-8 -*- import netsnmp class SnmpClass(object): """ SNMP ""&q ...
- LwIP Application Developers Manual5---高层协议之DHCP,AUTOIP,SNMP,PPP
1.前言 本文主要讲述高层协议,包括DHCP 2.DHCP 2.1 从应用的角度看DHCP 你必须确保在编译和链接时使能DHCP,可通过在文件lwipopts.h里面定义LWIP_DHCP选项,该选项 ...
- 使用metasploit做SNMP扫描和利用
使用MSF用于SNMP扫描 auxiliary/scanner/snmp/snmp_login 介绍 补充知识: 在执行SNMP扫描之前,需要了解几件事情.首先,“只读”和“读写”团体名(commun ...
- Snmp学习总结(七)——SNMP4J介绍
一.SNMP4J介绍 SNMP4J是一个用Java来实现SNMP(简单网络管理协议)协议的开源项目.它支持以命令行的形式进行管理与响应.SNMP4J是纯面向对象设计与SNMP++(用C++实现SNMP ...
- SNMP学习笔记之Python的netsnmp和pysnmp的性能对比
0x00 概览 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库.网上有较多的关于两个库的例子. 本文重点在于如何并发的获取snmp的数据,即同 ...
- SNMP学习笔记之SNMP4J介绍(Java)
0x00 SNMP4J介绍 SNMP4J是一个用Java来实现SNMP(简单网络管理协议)协议的开源项目.它支持以命令行的形式进行管理与响应.SNMP4J是纯面向对象设计与SNMP++(用C++实现S ...
- SNMP学习笔记之SNMP介绍,OID及MIB库
1.1. SNMP概览 SNMP的基本知识介绍简单网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法.该规范是由IETF ...
- 使用snmp4j实现Snmp功能(二)
相关链接:Snmp学习笔记使用snmp4j实现Snmp功能(一)使用snmp4j实现Snmp功能(二)使用snmp4j实现Snmp功能(三) 前一篇文章讲了如何用snmp4j实现set和get的功能, ...
随机推荐
- zzy:请求静态资源和请求动态资源, src再次请求服务器资源
[总结可以发起请求的阶段:请求动态资源:通过web.xml匹配action然后,自定义Servlet处理该action1)form表单提交请求的时候,用action设定,该页面发起请求的Servlet ...
- Win7系统怎么开启远程桌面?Win7远程桌面怎么用(转)
远程桌面服务开启之后,可以方便的远程管理服务器或计算机.为生活和工作带来不少便利呢,很多小伙伴还不知道怎么开启win7远程桌面吧(下面咗嚛以内网远程桌面为例) 工具/原料 Win7 Win7远程桌 ...
- ListView中每个item条目在被单击选中时能够高亮显示
在布局文件中设定: android:listSelector="@android:color/holo_red_light" 在代码中实现 listView.setSelector ...
- 【T_SQL】 基础
一.T-SQL 的组成 1.DML(数据操作语言 Data Manipulation Language) 查询.插入.删除和修改数据库中的数据.SELECT.INSERT. ...
- HDU 3461 Code Lock(并查集)
很好的一个题,思想特别6 题意:给你小写字母个数n,每个字母可以向上翻动,例如:d->c,a->z.然后给你m对数(L,R)(L<=R),表示[L,R]之间可以同时向上翻动,且翻动后 ...
- HTTP协议开发应用-文件服务器
HTTP(超文本传输协议)协议是建立在TCP传输协议之上的应用层协议.HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统. 本文将重点介绍如何基于Netty的 ...
- 利用StringList对象来管理这些动态生成的对象
如果程序需要动态创建大量的对象,那么我们可以利用StringList对象来管理这些动态生成的对象.1.创建StringList对象:OBJ := TStringList.Create; 2.保存动态生 ...
- JS小函数
join()\toString(): join()函数和toString()函数都是返回字符串类型. 针对一个数组: var arr = ["I","love" ...
- 服务器控件和 viewstate
//不会产生处理回发事件的方法.类似客户端html Repeater rep = new Repeater(); DataList dtl = new DataList(); FileUpload f ...
- iOS 查找文件、遍历文件系统
NSFileManager *manager = [NSFileManager defaultManager]; NSString *home = [@"~" stringByEx ...