24、Windows API 进程间通信,其他进程间通信方式

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
简介: 1、动态数据交换(DDE)和网络动态数据交换(NDDE)[1,2] DDE可能是最为强大的进程间通信方式,实现也非常复杂。通信的两端分为服务端与客户端,两端都需要具有窗口。 一个DDE的通信过程大致如下: DDE会话由客户端发起,先初始化一个会话。

1、动态数据交换(DDE)和网络动态数据交换(NDDE)[1,2]<?xml:namespace prefix = o />

DDE可能是最为强大的进程间通信方式,实现也非常复杂。通信的两端分为服务端与客户端,两端都需要具有窗口。

一个DDE的通信过程大致如下:

DDE会话由客户端发起,先初始化一个会话。DDE客户端会向服务端发送一个WM_DDE_INITIATE窗口消息。服务窗口收到此消息后,根据条件判断是否需要响应此消息,如果服务端确定可以与客户端建立会话,那么会返回WM_DDE_ACK消息。如果客户端成功收到了服务端发送的WM_DDE_ACK窗口消息,那么会话就已经建立,之后就进行数据的传输。

数据传输分为很多种方式,可以只传输一个单独的数据项,也可以再建立一个永久数据连接( Permanent Data Link)

如果进行独立数据项传输,数据传输的单位是数据项。客户端使用WM_DDE_REQUESTWM_DDE_POKE消息向服务端接收和发送数据项。数据的传输使用WM_DDE_DATA消息。

而永久数据连接的建立也是通过客户端发起,客户端向服务端发送WM_DDE_ADVISE消息,服务端根据情况做出回应,根据是否能够建立连接而返回不同的WM_DDE_ACK消息。终止数据连接使用消息WM_DDE_UNADVISE

客户端还可以使用WM_DDE_EXECUTE请服务端发送命令。

终止一个DDE会话使用WM_DDE_TERMINATE消息。

几乎所有的过程都是由客户端发起请求,而服务端响应,服务端响应的方向大多是发送一个WM_DDE_ACK消息。

DDE的通信需要操作系统ATOM表的帮助,用于索引数据。操作ATOM表有专门的API

2、通过File Mapping在进程间共享数据[3]

    共享文件是一种高效的进程间通信方式,因为直接共享内存,所以访问速度非常快。而且允许大量数据传输。

    共享内存的进程间通信与其他进程间通信方式相比,限制条件要少。比如邮槽对数据大小和数据流向有限制,管道只能采用半双工通信形式等,剪贴板容易受其他进程影响等。

使用File Mapping共享数据也有缺点。最大的缺点是无法实现实时性,一个进程无论是写入还是读出数据后,另一个进程都不知道对方的操作是否已经完成。因此在要求实时数据传输时,File Mapping通常与其他进程通信方式配合使用,用于传输大量的数据。

3Windows Socket

    利用Windows Socket实现的进程间通信借用了Socket通信的原理。其实任何可以在两台主机间进行网络数据通信的机制都可以用于进程间通信。

    如果在一台主机上既使用Socket服务端又实现Socket客户端,那么客户端在连接服务端时将IP指定为本机,就可以实现同一主机上的Socket服务端进程和Socket客户端进程间的通信。

    使用Socket进行进程间通信既可以实现实时性,又可以传输大数据量信息,且数据传输的速度也很快,因此应用范围很广泛。

    在进程间实现Socket通信的原理和程序实现方法与实现不同主机间的Socket通信没有区别。

参考

[1] 精通Windows API 函数、接口、编程实例

[2] http://msdn.microsoft.com/en-us/library/ms648711%28VS.85%29.aspx

[3] http://www.cnblogs.com/mydomain/archive/2011/01/07/1929874.html

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
Linux Shell
【Linux 进程间通讯 管道】使用Linux管道进行linux进程间通信
【Linux 进程间通讯 管道】使用Linux管道进行linux进程间通信
31 1
|
3月前
|
API Python Windows
python3应用windows api对后台程序窗口及桌面截图并保存的方法
python3应用windows api对后台程序窗口及桌面截图并保存的方法
98 1
|
1月前
|
存储 Linux 程序员
Linux进程间通信(IPC)教程 Linux信号量:讲解POSIX信号量在Linux系统进程间通信中的编程实践
Linux进程间通信(IPC)教程 Linux信号量:讲解POSIX信号量在Linux系统进程间通信中的编程实践
21 1
|
1月前
|
消息中间件 Linux API
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
27 1
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
|
6月前
|
存储 缓存 API
[总结]Windows Crypto API 自动更新根证书问题原因及解决方案
[总结]Windows Crypto API 自动更新根证书问题原因及解决方案
|
6月前
|
API Windows
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例
|
6月前
|
安全 API Windows
[笔记]Windows核心编程《二十二》注入DLL和拦截API(三)
[笔记]Windows核心编程《二十二》注入DLL和拦截API(三)
133 0
|
6月前
|
消息中间件 编解码 安全
[笔记]Windows核心编程《二十二》注入DLL和拦截API(二)
[笔记]Windows核心编程《二十二》注入DLL和拦截API(二)
103 0
|
19天前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
26天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。

热门文章

最新文章