首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用构建SNMP请求响应服务

使用构建SNMP请求响应服务
EN

Stack Overflow用户
提问于 2010-04-13 01:55:31
回答 1查看 634关注 0票数 1

我有一个第三方协议模块(SNMP),它建立在异步核心之上。异步核心接口用于处理响应消息。在异步核心主循环运行时,设计生成协议请求端的客户端的合适技术是什么?我现在可以想到两种选择:

  1. 使用asyncore.loop()的循环超时参数,允许我的客户端程序时间向适当的asyncore.loop发送一个与接收方相同的异步处理循环中执行的客户端异步核心调度器。

什么是最好的选择?我正在研究第二个解决方案,因为协议API不允许我直接访问异步核心参数。如果我误解了使用异步核心的正确技术,请纠正我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-29 03:45:05

我通过在接收进程的异步核心循环中添加一个回调函数来解决这个问题。

该解决方案在某种程度上是特定于我所实验的模块(pySNMP)的,但是这里有一个总体想法:

  1. 定义一个函数闭包,该闭包返回一个可调用的方法,其中包含对dictwindow变量的存储引用。dict跟踪预期的响应,window是发送方缓冲区的大小。
  2. 将对闭包函数的引用传递给自定义的asyncore.dispatcher实例。回调函数可以在invocation.
  3. set方法writeable中执行-- dispatcher的超时为一个小值。这可以防止异步核心在等待接收到的数据包时阻塞太久。我用了.05秒。越低,应用程序的响应就越多,但不要太低。
  4. 更新异步核心read_handle方法以从全局dict结构中删除接收到的响应。这将允许新消息被transmitted.
  5. now启动dispatcher和异步核心的每个循环,系统将调用回调函数,并发送任何消息,直到定义的窗口大小.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2626512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档