MFC:通过代码简单理解进程间的通讯机制——共享内存

下面用共享映射文件的方式实现进程间通信,代码可以运行。

一、浅理解

每个进程有自己独立的空间,一个进程无法访问其他进程的数据。就好像两个是互不干涉的个体,想让它们进行通信(交换数据),就必须有一段它们都可以访问到的空间,作为中间介质。在计算机中,可以存放数据的地方分为内存和硬盘,进程是运行着的程序,肯定在内存当中。为让进程A和进程B进行通信,它们都可以访问的空间可以是

  • 内存中它们以外的区域
  • 硬盘中的区域

内存文件映射是将硬盘中的一个文件映射到内存中,进程A,B都可以访问该内存(文件),达到交换数据的目的。如右图是给用户的直接感觉,两个进程操作同一个物理文件,通过文件的读写,交换数据。

在这里插入图片描述
在这里插入图片描述

二、发送方(服务器)

个人理解,虽然共享内存都可以读写,也没有服务器和客户端的概念。但是,需要有一方创建这个文件,而另一方只需要获取并打开这个文件。为了方便,将创建文件的一方称作服务器,而获取并打开文件的一方称为客户端。而事实上,服务器或者客户端都可以对文件进行读写,类似于网络编程中的客户端和服务器都可以发消息接消息。自己写的服务器端C++代码如下

#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#pragma warning(disable:4996)
int_tmain(intargc, _TCHAR* argv[]){
	HANDLEhFile =CreateFile(TEXT("c:\zj.dat"),GENERIC_READ|GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
	
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值