原文地址 : 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是线程安全的吗的更多相关文章

  1. python并发获取snmp信息及性能测试

    python & snmp 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库.网上有较多的关于两个库的例子. 本文重点在于如何并发的获取 ...

  2. python通过snmp协议运用多线程获取多台主机网卡信息,写入数据库

    #-*- coding:utf-8 -*- import netsnmp class SnmpClass(object): """ SNMP ""&q ...

  3. LwIP Application Developers Manual5---高层协议之DHCP,AUTOIP,SNMP,PPP

    1.前言 本文主要讲述高层协议,包括DHCP 2.DHCP 2.1 从应用的角度看DHCP 你必须确保在编译和链接时使能DHCP,可通过在文件lwipopts.h里面定义LWIP_DHCP选项,该选项 ...

  4. 使用metasploit做SNMP扫描和利用

    使用MSF用于SNMP扫描 auxiliary/scanner/snmp/snmp_login 介绍 补充知识: 在执行SNMP扫描之前,需要了解几件事情.首先,“只读”和“读写”团体名(commun ...

  5. Snmp学习总结(七)——SNMP4J介绍

    一.SNMP4J介绍 SNMP4J是一个用Java来实现SNMP(简单网络管理协议)协议的开源项目.它支持以命令行的形式进行管理与响应.SNMP4J是纯面向对象设计与SNMP++(用C++实现SNMP ...

  6. SNMP学习笔记之Python的netsnmp和pysnmp的性能对比

    0x00 概览 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库.网上有较多的关于两个库的例子. 本文重点在于如何并发的获取snmp的数据,即同 ...

  7. SNMP学习笔记之SNMP4J介绍(Java)

    0x00 SNMP4J介绍 SNMP4J是一个用Java来实现SNMP(简单网络管理协议)协议的开源项目.它支持以命令行的形式进行管理与响应.SNMP4J是纯面向对象设计与SNMP++(用C++实现S ...

  8. SNMP学习笔记之SNMP介绍,OID及MIB库

    1.1.    SNMP概览 SNMP的基本知识介绍简单网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法.该规范是由IETF ...

  9. 使用snmp4j实现Snmp功能(二)

    相关链接:Snmp学习笔记使用snmp4j实现Snmp功能(一)使用snmp4j实现Snmp功能(二)使用snmp4j实现Snmp功能(三) 前一篇文章讲了如何用snmp4j实现set和get的功能, ...

随机推荐

  1. cordova+angularJS+ionic

    1.创建项目 2.路由 angular.module("starter",['ionic']) // 依赖 ionic 提供的ui-router .config(function ...

  2. phpcms v9 黄页实现手机访问手机版,电脑访问电脑版(双模板)

    第一步.模板文件夹下,yp复制一份,改名字 ypwap 第二步.修改phpcms/modules/yp/index.php和phpcms/modules/ypwap/index.php //判断客户端 ...

  3. iOS中图片动画的三种模式及基本的代码实现

    -(void)play { //第一种图片动画模式 头尾方式 //头尾方式 [UIView beginAnimations:nil context:nil];//动画开始 [UIView setAni ...

  4. LayoutInflater(四)

    如果说要按类型来划分的话,自定义View的实现方式大概可以分为三种,自绘控件.组合控件.以及继承控件.那么下面我们就来依次学习一下,每种方式分别是如何自定义View的. 一.自绘控件 自绘控件的意思就 ...

  5. 【微信Java开发 --番外篇】错误解析

    虽然在微信开发过程中,会有微信公众平台开发者文档中的<全局返回码>作为错误的参考对比:但是依旧的,会觉得有时候的问题莫名其妙.[注:本人使用weixin-java-tools进行开发] 下 ...

  6. file-max与ulimit的关系与差别

    典型的,提供大量静态文件访问的web服务器,缓存服务器(如squid), 均要注意这个问题 网上的教程,大约只是简单说明了如何设置ulimit和file-max, 但并没有说清楚这两者之间的差别,让人 ...

  7. 静态局部变量、静态全局变量、extern全局变量、自动变量 札记

    静态局部变量 静态局部变量. 从称呼上我们可以看出,静态局部变量首先是一个局部变量,因此其只在定义它的函数内有效,冠以静态的头衔后,其生存期就被延长了,不会随着函数的返回而被撤销.我们可以这样来理解: ...

  8. 廖雪峰js教程笔记 2

    arguments JavaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数.arguments类似Array但它不是一个Arr ...

  9. SU Demos-06Selecting Traces

    不足之处,欢迎批评指正 共3个脚本,先看readme 第1个脚本 运行结果 第2个脚本 运行结果 第3个脚本 运行结果

  10. dubbo服务治理框架设计

    dubbo.JSF作为使用最广泛的服务端框治理架,其设计和实现思想值得进行学习研究. 整个服务管理框架核心的原理基于反射以及socket调用实现,服务管理框架包含服务的注册管理 服务的索引管理以及服务 ...