进程间通信的方法有很多,使用的条件也不太一样,有些必须同时在本机使用,有些可以远程,希望接下来的时间可以一个一个尝试,并弄懂。
1.浅理解
每个进程有自己独立的空间,一个进程无法访问其他进程的数据。就好像两个是互不干涉的个体,想让它们进行通信(交换数据),就必须有一段它们都可以访问到的空间,作为中间介质。
在计算机中,可以存放数据的地方分为内存和硬盘,进程是运行着的程序,肯定在内存当中。
为让进程A和进程B进行通信,它们都可以访问的空间可以是内存中它们以外的区域,或者是硬盘中的区域。
通过内存文件映射,则是将硬盘中的一个文件,映射到内存中,进程A,B都可以访问该内存(文件),达到交换数据的目的。
如右图是给用户的直接感觉,两个进程操作同一个物理文件,通过文件的读写,交换数据。
2.发送方(服务器)
个人理解,虽然共享内存都可以读写,也没有服务器和客户端的概念,但是,有一方需要创建这个文件,而另一方只需要打开这个文件。
所以,我将创建文件的一方,认为是服务器,而打开文件,进行读取的一方称为客户端。而事实上,服务器或者客户端都可以对文件进行读写,类似于网络编程中,都可以读写。
先贴代码,再解释
#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#pragma warning(disable:4996)
int_tmain(intargc, _TCHAR* argv[])
{
HANDLEhFile &