一种不影响前台运行的打印方法技术

技术编号:2830724 阅读:201 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种不影响前台运行的打印方法,配合使用前台和后台,其特征在于,包括以下步骤:1.1)前台通过前后台的网络接口发送打印字串的对应标识和打印变参;1.2)后台接收并依所述标识获取对应的打印字串,再结合所述变参一起进行解析。这种方法,通过对打印信息进行替换,把替换后的信息和变参同时发送到后台,由后台进行解析还原出最终需要的信息,从而避免在系统前台进行字串解析,极大节省前台处理器的处理能力和前后台的打印信息传送带宽,提高性能并保证了软件系统运行的安全性。

【技术实现步骤摘要】

本专利技术涉及一种在程序中进行打印的方法,具体涉及在需要在前后台传 送大量打印信息的软件系统中进行打印的方法。
技术介绍
目前,很多软件系统通过大量的打印来观察软件运行情况。 一般的打印 方法就是在前台调用打印接口对打印字串和变参进行解析,最后得到一个含 有最终信息的字串,再把含有最终信息的字串发送到后台进行保存或显示。大量的打印信息虽然能直观的反映了软件系统的运行情况,但却对软件系统运行产生了极大影响,包括(-)在打印过程中,需要前台解析打印字串, 影响了软件系统的性能;t)在打印大量输出时,需要占用前后台大量的网络 带宽,从而对软件系统业务造成极大影响。同时由于打印需要对字串进行处 理,由于编程错误,导致传入的字串参数有误或者变参和实际要求不一致, 都可能导致软件系统前台死机,给系统带来极大的安全隐患。为了减少大量打印对系统的冲击, 一种方法是对打印进行控制。要求在 系统运行时能进行有选择的打印,从而减少打印量。但这种方式在无人值守 系统中很难使用,因为没人会去调整打印输出;其次在真需要大量打印时, 该方法无法控制打印量,还是可能产生问题。 一种是对打印方法进行限制, 由一个低优先级任务来进行打印任务,在空闲时进行打印,这样不影响系统 性能,配合上网络状况检测来控制打印避免影响网络。但该方法在系统繁忙 时容易导致低优先级任务无法得到处理,从而大量丟掉打印。
技术实现思路
本专利技术需要解决的技术问题是提供,无须在前后台传送大量的打印信息,同时也不必在前台对打印字串进行解析。 本专利技术的上述技术问题这样解决,提供,配合使用前台和后台,包括以下步骤1.1) 前台通过前后台的网络接口发送打印字串的对应标识和打印变参;1.2) 后台接收并依所述标识获取对应的打印字串,再结合所述变参一起进行解析。按照本专利技术提供的打印方法,所述打印字串的对应标识是打印字串在内 存中的地址。按照本专利技术提供的打印方法,所述打印字串所在运行文件是bin格式, 所述步骤1.2)中获取包括利用所述内存中的地址减去所述运行文件加载基 地址,获得所述打印字串在bin运行文件中的偏移,再从^f兹盘文件的相应偏 移位置读出字串,还原出了前台打印接口所需的所述打印字串。按照本专利技术提供的打印方法,所述打印字串标识的对应标识是前台调用 打印函数的指令地址。按照本专利技术提供的打印方法,所述步骤1.2)中获取包括根据所述指令地 址,从带调试信息的运行文件中获得所述打印字串在源码中的位置,并根据 该位置从源码中获得所迷打印字串。按照本专利技术提供的打印方法,该方法还包括前台根据其调用打印函数后 返回的地址获得所述变参。按照本专利技术提供的打印方法,所述获得包括从该地址获得返回指令的内 容,再根据指令格式分析所述内容获得打印的参数长度值len,从该地址开 始,往堆栈生长的反方向拷贝对应所述长度值len的长度,获得所述变参。按照本专利技术提供的打印方法,所述步骤1.2)中解析由在后台运行的字符 串解析程序进行。本专利技术提供的打印方法,通过对打印信息进行替换,把替换后的信息和 变参同时发送到后台,由后台进行解析还原出最终需要的信息,从而避免在 系统前台运行时进行字串解析,极大节省前台处理器的处理能力和前后台的 打印信息传送带宽,提高性能并保证了软件系统运行的安全性。附图说明下面结合附图和具体实施例进一步对本专利技术进行详细说明。 图1是运行文件在内存中的存放示意图。图2是前台调用打印函数后的堆栈布局示意图。 图3是本专利技术前台变参获取的程序流程示意图。 图4是本专利技术后台打印字串还原的程序流程示意图。具体实施例方式首先,说明本专利技术思想本专利技术方法包括以下组成部分1. 前台通过前后台的网络接口发送打印信息。2. 后台设置接受程序,接受前台发送来的信息。3. 有一个字串解析程序。但该解析程序设在后台,不设在前台。 同时还包括如下組成部分4. 在前台,对打印字串以一个可还原打印字串的标识进行替换。5. 在前台,通过堆栈直接获得变参。在前台不再和打印字串结合解析变 参内容。6. 把步骤4和步骤5获得的标识和变参,通过步骤l所述的接口把变参 内容发送到后台。7. 步骤2中设置的后台程序收到步骤6发来的内容后,通过规则,把其 中的标识还原为打印字串。8. 在步骤6还原储打印字串后,后台使用步骤3设置的解析程序,把还 原后的打印字串和步骤6发送的变参一起进行解析,得到最后的打印信息。本专利技术所述的步骤4的替换可以有如下几种方式4.1以打印字串在内存中的地址替换打印字串本身的信息4.2以调用打印函数的指令地址替换打印字串本身的信息第二,以下面描述的实现方式具体说明本专利技术方法,该实现方式包括1. 前台把打印字串地址和从堆栈中获得的变参通过网络接口发给后台。2. 后台收到前台发来的打印信息后,首先取出打印字串的地址,同时读 取bin文件,获得真实的打印字串内容。3. 根据获得的打印字串和变参,后台进行打印解析,得到真实的打印内容。上面的步骤中包括二大关键部分,具体是 (-)打印字串的替换与还原本专利技术通过对打印字串进行替换,以替换后的标识做为打印信息发给后 台。为了后台能够解析打印,要求替换后的信息能够还原成原来的打印字串。 一种可行的方法是把打印字串在内存中的地址做为替换标识。打印输出接口一般如下printf(const char * ftnt,...)。其中的参数ftnt表 示打印字串在内存中的地址,后面的…表示打印所需的变参。如果打印字串是在代码中硬编码的,则在运行文件中将会储存该字串。 如图1,以运行加载到前台运行文件的格式是bin格式文件为例,该bin文 件是整个按顺序加载到内存中的。从bin文件的加载方式可以看出,相对与 内存零地址10的ftnt值减去一个简单的偏移量11,即加栽基地址ll,就可 以获得foit所代表的字串在bin文件中的位置。两者是一个简单的线性关系。后台在获得打印字串的内存地址后,把该地址减去加载基地址,就可以 获得打印字串在bin运行文件中的偏移。从文件的相应偏移位置读出字串, 就还原出了前台打印接口所需的打印字串。如果运行文件不是bin格式,而是其它格式,同样也都可以根据文件格 式和加载基地址获得打印字串在相应格式文件中的偏移。。变参的获取为了在后台解析获得完整的打印信息,还需要前台发送打印字串所需要 的变参。为了高效简单的获得变参,我们考察调用打印函数后的反汇编。0x010e3b0a 68 80 39 0e 01PUSH 0xl0e3980 0x010e3b0f6a 03PUSH30x010e3b1168 Ob 02 00 00PUSH0x20b0x010e3b166al2PUSH180x010e3b1868 84 01 00 00PUSH0x1840x010e3bld68 c0 31 OeOlPUSH0xl0e31c00x010e3b22e8 09 58 6d ffCALLprint0x010e3b2783 c4 20ADDESP, 32当调用打印函数返回后,需要对原来压参进行调整,。ADD ESP, 32这句话的意思就是对堆栈进行调整。对堆栈调整的大小32就是压参的长度。因 此如果能获得返回后的指令内容,就可以获得打印压参的长度,并通过堆栈 来获得变参的内容。当调本文档来自技高网...

【技术保护点】
一种不影响前台运行的打印方法,配合使用前台和后台,其特征在于,包括以下步骤:    1.1)前台通过前后台的网络接口发送打印字串的对应标识和打印变参;    1.2)后台接收并依所述标识获取对应的打印字串,再结合所述变参一起进行解析。

【技术特征摘要】
1、一种不影响前台运行的打印方法,配合使用前台和后台,其特征在于,包括以下步骤1.1)前台通过前后台的网络接口发送打印字串的对应标识和打印变参;1.2)后台接收并依所述标识获取对应的打印字串,再结合所述变参一起进行解析。2、 根据权利要求1所述打印方法,其特征在于,所述打印字串的对 应标识是打印字串在内存中的地址。3、 根椐权利要求1或2所述打印方法,其特征在于,所述打印字串 所在运行文件是bin格式,所述步骤1.2)中获取包括利用所述内存中的地址 减去所述运行文件加栽基地址(ll),获得所述打印字串在bin运行文件中的 偏移,再从磁盘文件的相应偏移位置读出字串,还原出了前台打印接口所需 的所述打印字串。4、 根据权利要求1所述打印方法,其特征在于,所述...

【专利技术属性】
技术研发人员:叶媲书黄文政傅红燕张人剑王建新
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1