VC++下动态数据交换技术之会话处理
2008-11-14 19:34:05 来源:WEB开发网DDE的事务
DDE对话是在两个进程之间进行的一种逻辑连接,通过这种连接可以进行数据交换。在客户和服务器之间进行的每一次会话都是由一系列事务所构成的。对于每个事务可以包含一个数据请求/数据服务和一个对应的响应。DDE服务器和客户所能启动的事务是不同的。服务器只能启动两种事务:向客户发送一个项目和终止一次对话;而DDE客户则可以启动如下八种服务:枚举DDE服务及主题、与服务器建立一次对话、向服务器请求一个项目、与服务器建立一个数据连接、终止数据连接、请求服务器执行一个或多个命令、向服务器发送一个数据项和终止一次会话。
图1 DDE会话事务流程
图1给出了一个典型的DDE会话事务流程。由于DDE对话是由客户程序启动的,因此在客户程序启动对话前要确保DDE服务器程序已投入运行。客户首先启动会话,服务器程序响应客户的请求并向客户发送数据,客户方则可以主动向服务器发送数据,并要求与服务器建立热/温数据链路。此后客户可以向服务器发送命令并要求服务器执行。客户和服务器中的任何一方均有权利要求对方结束此次对话。在进行这些事务处理时,必须严格按照消息接收顺序去进行处理。当应用程序在等待DDE响应而无法处理另一个请求时,会发出一条表示忙的WM_DDE_ACK消息。
启动、终止一个会话
图1清楚给出了启动、终止一个DDE会话的消息处理流程:由客户方首先发送一条WM_DDE_INITIATE消息以启动一个DDE会话。通常的做法是客户将SendMessage()的第一个参数设置为-1,以广播的形式将此消息发送给所有的其他应用程序。当然,如果明确知道服务器DDE窗口的句柄,也可以直接将消息发送到该窗口。客户应用程序可以通过调用GlobalAddAtom()函数来准备服务名和主题名原子,也可以将服务名/主题名设置为NULL的方式与潜在的服务器进行任何可能的话题。
更多精彩
赞助商链接