科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VC++下动态数据交换技术之会话处理

VC++下动态数据交换技术之会话处理

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

动态数据交换(DDE)是建立在Windows内部消息系统、全局原子和共项全局内存基础上的一种协议。

作者:郎锐 来源:天极网 2007年10月19日

关键字: VC++ 数据交换 会话处理

  • 评论
  • 分享微博
  • 分享邮件
动态数据交换技术概述

  动态数据交换(DDE)是建立在Windows内部消息系统、全局原子和共项全局内存基础上的一种协议,可用来协调Windows应用程序之间的数据交换和命令调用。DDE协议通过对使用消息参数wParam和lParam来传递全局原子和全局共享内存句柄的方式的精确定义,使其能在进程间传递更多的信息,增强进程间共享数据和处理数据的能力。通常DDE主要用来传递那些不需要用户经常干涉的数据流。在建立原始链路后,有关的应用程序即将其接管过去,而无需用户进一步的介入。DDE所提供的是一种更加集成的工作环境。

  DDE的实现需要有两个应用程序参与一个“对话”以便交换信息。提供数据和执行命令的一方被指定为服务器,获取数据的一方称为客户。服务器和客户机是程序在一次具体会话中的角色,其区别在于所能启动的“事务”类型的不同。对于每一个DDE对话,会话双方要指定或专门建立维护会话的不可见DDE窗口以负责对DDE消息的处理。一个DDE对话是由参与会话的窗口句柄来标识的。正因如此,任何一个窗口都不应当参与与其他窗口只的多于一个的DDE对话。如果在一个客户和服务器之间存在多个对话过程,必须为每一个新的对话过程在一对一的基础上提供一个附加窗口。

  在任何通信中,通信双方都必须统一所交换数据的标识和格式。DDE协议采用的是由服务、主题和项目组成的一个三级层次命名来对DDE所传数据单元进行标识。一个特定的DDE会话唯一地由其服务名和主题名进行定义。在初始化一个DDE对话时,由DDE客户询问此特定DDE服务器的应用程序名和主题名。通常是将使用服务器应用程序的可执行文件名作为服务名。DDE的主题分类是一个包含多个数据项的普通数据类型。有效的主题及项目的选择由DDE服务器任意设置。由于客户和服务器窗口一起来识别一个DDE对话,因此在对话过程中不能改变应用程序或主题。但却可以在需要的时候对项目名称进行更改。

  DDE的事务

  DDE对话是在两个进程之间进行的一种逻辑连接,通过这种连接可以进行数据交换。在客户和服务器之间进行的每一次会话都是由一系列事务所构成的。对于每个事务可以包含一个数据请求/数据服务和一个对应的响应。DDE服务器和客户所能启动的事务是不同的。服务器只能启动两种事务:向客户发送一个项目和终止一次对话;而DDE客户则可以启动如下八种服务:枚举DDE服务及主题、与服务器建立一次对话、向服务器请求一个项目、与服务器建立一个数据连接、终止数据连接、请求服务器执行一个或多个命令、向服务器发送一个数据项和终止一次会话。


图1 DDE会话事务流程

  图1给出了一个典型的DDE会话事务流程。由于DDE对话是由客户程序启动的,因此在客户程序启动对话前要确保DDE服务器程序已投入运行。客户首先启动会话,服务器程序响应客户的请求并向客户发送数据,客户方则可以主动向服务器发送数据,并要求与服务器建立热/温数据链路。此后客户可以向服务器发送命令并要求服务器执行。客户和服务器中的任何一方均有权利要求对方结束此次对话。在进行这些事务处理时,必须严格按照消息接收顺序去进行处理。当应用程序在等待DDE响应而无法处理另一个请求时,会发出一条表示忙的WM_DDE_ACK消息。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章