第20章进程间通信 主要内容 本章包括网络编程的部分内容,即进程间的通信。主要内容 有进程间通信的基本概念和原理,几种典型的进程间通信的 方法,如剪贴板、窗口消息、消息队列、 Sockets等,以上述 方法为例,讲解了它们的编程模型和编程原理,侧重于数据 的发送和接收,并给出了实例
第20章 进程间通信 主要内容 本章包括网络编程的部分内容,即进程间的通信。主要内容 有进程间通信的基本概念和原理,几种典型的进程间通信的 方法,如剪贴板、窗口消息、消息队列、Sockets等,以上述 方法为例,讲解了它们的编程模型和编程原理,侧重于数据 的发送和接收,并给出了实例
20.1进程间通信 ■20.1.1基本概念 程序是为了完成某项任务编排的语句序列,它告诉计算机如何执 行,因此程序是需要运行的。 进程能描述程序的执行过程而且可以作为共享资源的基本单位。 所谓进程通信是指进程之间可直接以较高的效率传递较多数据的 信息交换方式。这种方式中采用的是通信机构,如消息发送和消 息接收、邮箱结构等,在进程通信时往往以信件形式(或称消息) 传递信息。 所谓信件是指进程之间相互传递的赖以发生交互作用的有结构的 数据
20.1 进程间通信 ◼ 20.1.1 基本概念 程序是为了完成某项任务编排的语句序列,它告诉计算机如何执 行,因此程序是需要运行的。 进程能描述程序的执行过程而且可以作为共享资源的基本单位。 所谓进程通信是指进程之间可直接以较高的效率传递较多数据的 信息交换方式。这种方式中采用的是通信机构,如消息发送和消 息接收、邮箱结构等,在进程通信时往往以信件形式(或称消息) 传递信息。 所谓信件是指进程之间相互传递的赖以发生交互作用的有结构的 数据
20.1.1基本概念 进程通信的一般模型 进程P 进程P 消息发送 消息发送机构 管理 发送机构 管理 消息发送 信道 接收机构 消息接收 肖息接收 图20.1进程通信的一般模式
20.1.1 基本概念 ◼ 进程通信的一般模型 发送机构 接收机构 消 息 管理 消 息 管理 发送机构 接收机构 消息发送 信道 进程Pi 操作系统范围 进程Pj 消息接收 消息发送 消息接收 图20.1 进程通信的一般模式
20.1.2 Windows下进程间的通信 PC机制 机制 否 命令行 剪贴板 网络DDE 窗口消息 命名管道 DDE 串行/并行通信 匿名管道 远程过程调用 动态连接库 分布式COM 邮件槽 COM Windows Sockets 消息队列 否 连接? Datagram Sockets Stream Sockets 图202 Windows的IPC机制
20.1.2 Windows下进程间的通信 ◼ IPC机制 机制 图20.2 Windows的IPC 机制 是 否 共享内存和 文件映射 动态连接库 匿名管道 DDE 窗口消息 剪贴板 命令行 COM 消息队列 串行/并行通信 命名管道 网络 DDE Windows Sockets 远程过程调用 分布式COM 邮件槽 网络 通信? Stream Sockets Datagram Sockets 是 面向 否 连接?
20.2窗口消息(1 ■202.1 COPYDATASTRUCT结构 typedef struct tag COP YDATASTRUCT DWORD dwData DWORD cdAta PVOID IpData 3 COPYDATASTRUCT, * PCOPYDATASTRUCT ■2022 WM COPYDATA消息
20.2 窗口消息(1) ◼ 20.2.1 COPYDATASTRUCT结构 typedef struct tagCOPYDATASTRUCT { DWORD dwData; DWORD cbData; PVOID lpData; } COPYDATASTRUCT, *PCOPYDATASTRUCT; ◼ 20.2.2 WM_COPYDATA消息
20.2窗口消息(2) ■窗口消息的程序框图 输入要传递的信 程序起点 /程序起点 息,确认发送 准备接收消 寻找接收窗 体的句柄 否弹出未找到 是否为 找到句柄 句柄的提示 WM COPY DATA消息 将信息发送 到指定窗口 接收消息并显示 结束 (a)窗口消息发送端 (b)窗口消息接收端 图203窗口消息的编程框架
20.2 窗口消息(2) ◼ 窗口消息的程序框图 输入要传递的信 息,确认发送 寻 找接 收 窗 体的句柄 找到句柄 弹 出未 找 到 句柄的提示 将 信息 发 送 到指定窗口 程序起点 结束 否 是 (a) 窗口消息发送端 (b) 窗口消息接收端 图20.3 窗口消息的编程框架 准备接收消息 接收消息并显示 程序起点 结束 WM_COPY DATA消息 是否为 否 是
20.3消息队列 ■消息的程序框图 程序起点 程序起点 列提 从队列提 输入发 创建 取文本 取图片 送文本 送图像 队列 发送信息 到队列 队列为空 从队列提 弹出 取信息 结束 提示 结束 (a)消息队列发送端 (b)消息队列接收端 图205消息队列的编程框架
20.3 消息队列 ◼ 消息的程序框图 (a) 消息队列发送端 (b) 消息队列接收端 图20.5 消息队列的编程框架 创建 队列 程序起点 结束 输入发 送文本 选择发 送图像 发送信息 到队列 结束 程序起点 弹出 提示 从队列提 取图片 从队列提 取文本 队列为空 否 是 从队列提 取信息
安装 Message Queuing Services ■通过控制面板手工创建 控制面板->添加删除程序->添加/删除 Windows组建->消息队列服 务安装MSMQ。接着要配置MSMQ,方法是打开服务器资源管理器 本机机器名->消息队列->专用队列->创建有名的队列(例如, 队列名为a,是程序所需要的)。 通过程序方式创建 if (Message Queue Exists(".Private slaaa ) MyMQ =new Message Queue(". PrivateS aaa"); else MyMQ= Message Queue. Create(".Private s aaa
安装Message Queuing Services ◼ 通过控制面板手工创建 控制面板-->添加/删除程序-->添加/删除Windows组建-->消息队列服 务安装MSMQ。接着要配置MSMQ,方法是打开服务器资源管理器 -->本机机器名-->消息队列-->专用队列-->创建有名的队列(例如, 队列名为aaa,是程序所需要的)。 ◼ 通过程序方式创建 if (MessageQueue.Exists(".\\Private$\\aaa")) MyMQ = new MessageQueue(".\\Private$\\aaa"); else MyMQ = MessageQueue.Create(".\\Private$\\aaa");
20.4 Windows sockets编程 ■204.1 Sockets简介 计算机A 计算机B 进程a 进程b Socket 图206 Socket通信原理
20.4 Windows Sockets编程 ◼ 20.4.1 Sockets简介 计算机A 计算机B 进程a 进程b Socket Socket 图20.6 Socket通信原理
20.4.1 Sockets简介(1) Socke的定义如下: 个特殊的通信域,例如一个网络连接或者一个进程间通信 管道; 个特殊的通信类型,例如流或数据报; 个特殊的协议,例如TCP( Transport Control Protocol,传输 控制协议)或 UDP(User Datagram Protocol,用户报文协议)
20.4.1 Sockets简介(1) ⚫ 一个特殊的通信域,例如一个网络连接或者一个进程间通信 管道; ⚫ 一个特殊的通信类型,例如流或数据报; ⚫ 一个特殊的协议,例如TCP(Transport Control Protocol,传输 控制协议)或UDP(User Datagram Protocol,用户报文协议)。 ◼ Socket的定义如下: