老星头的JoJo技术花园

主要花草:XML 园间杂草:SNMP C++ JAVA :)
posts - 4, comments - 11, trackbacks - 0, articles - 0
....原来是有这样的需求啊,那的确没什么太好的办法了,缓存到文件可能是较常用的方法了。建议你写到一个临时文件中,然后关闭writer,然后用文件I/O 的API读出文件内容,发到SOCKET上。 :)
XERCES 是独占写的,你必须把writer关闭以后,才可以读取。其实你要明白XERCES在把XML导入为DOMDocument后,就是独立的一份了,这个时候你把源XML删除了都没关系,你也可以把这个DOMDocument写到任何地方,所以不用读作为缓存写进行的那个文件,其他人也要读的话,直接把DOMDocument*指针给他们,让他们直接操作就OK了。你用addNode之类的方法对DOMDocument树做的任何改动,都是立即在内存中生效的,不是写回到文件才生效。(主观臆断了您的需求,不知道有没有猜对呵呵,如果不是,请再联系呵呵 :)
re: SNMP 小乔的老哥 2005-12-13 00:25
抱歉,这几天出差+加班,今天才看到你的留言,非常不好意思。

由于我对您使用的服务器和平台等不太了解,所以我仅发表一些
持保留态度的意见。

首先,您的需求是可以通过SNMP实现的,但是在实际应用中,
SNMP被更多的应用于监控管理(即是只看,而不改),如你
所说的增加/删除/连接新的软件设备是很难通过SNMP接口来
实现的,必竟SNMP是一个轻量级的网管协议。但如果你是要
把被监控端发生了 增加/删除/连接新的软件设备 这样的事件,
通过SNMP告诉管理者,是很简单而且很适宜的。至于监控
软件服务器的实时运行数据,比如进程情况,CPU负荷等等,
也能够很简单的通过SNMP实现,也是现实中的SNMP的主要
应用之一。

如果用SNMP实现,关于您的三个问题:
(1)必须要在各个服务器运行环境中配置好SNMP
(2)基本上是这样的,传输的事情不用操心,SNMP会
自己处理。但是需要注意,SNMP必竟不是消息中间件,
所以实际上是有一个管理者,可以读写多个代理者上的
数据结构。而代理是无法读写管理者端的数据结构的。
当然,这个问题可以通过互为管理-代理来解决。
(3)几乎不用再按照协议开发接口,或做什么复杂的开发,
网上有很多开源的项目,已经把接口封装的很好了,调用相应
API就OK了。著名的SNMP软件包有 SNMP++, NET-SNMP等。

由于对您的项目的情况不太了解,所以无法给予更多帮助了:)
不过我建议您再做一做需求分析,看是否需要使用SNMP技术,
也许有更好的办法,比如消息中间件等等。

如果的确需要使用SNMP相关技术,我愿意和您一起探讨研究,
希望我的一点经验可以对你有所帮助 :)