内存共享通信方式

server.cpp

#include <stdio.h>
#include <Windows.h>
int main()
{
HANDLE hFile;
hFile = CreateFile("tmpfile", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
printf("create file failed");
system("pause");
return ;
} DWORD dwWrite;
WriteFile(hFile, "test data", strlen("test data") + , &dwWrite, NULL); HANDLE hFileMapping;
hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, , , "mytestfilemapping");
if(hFileMapping == NULL)
{ CloseHandle(hFile); printf("Create file mapping failed!");
system("pause");
return ;
}
/* 可以在这里面修改pfile
char * pFile = (char*)MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if(pFile == NULL)
{
CloseHandle(hFileMapping);
CloseHandle(hFile);
printf("map view of file failed!");
system("pause");
return 0;
}
*/
Sleep();
CloseHandle(hFile);
CloseHandle(hFileMapping); system("pause");
return ;
}

client.cpp

#include <stdio.h>
#include <Windows.h>
int main()
{
HANDLE hFile;
hFile = CreateFile("tmpfile", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
printf("create file failed");
system("pause");
return ;
} DWORD dwWrite;
WriteFile(hFile, "test data", strlen("test data") + , &dwWrite, NULL); HANDLE hFileMapping;
hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, , , "mytestfilemapping");
if(hFileMapping == NULL)
{ CloseHandle(hFile); printf("Create file mapping failed!");
system("pause");
return ;
}
/* 可以在这里面修改pfile
char * pFile = (char*)MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if(pFile == NULL)
{
CloseHandle(hFileMapping);
CloseHandle(hFile);
printf("map view of file failed!");
system("pause");
return 0;
}
*/
Sleep();
CloseHandle(hFile);
CloseHandle(hFileMapping); system("pause");
return ;
}

例子包括剪切板,  匿名管道(父子进程通信), 命名管道, 油槽(单向, 但可以一边同时建立服务与客户端),  内存共享

源码下载

MFC学习 进程间通信的更多相关文章

  1. MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变

    1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量:           CToolBar m_toolbar;CImageList ...

  2. MFC学习笔记1---准备工作

    什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...

  3. MFC 学习笔记

    MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...

  4. 孙鑫MFC学习笔记17:进程间通信

    17 1.进程间通信4种方式 2.OpenClipboard打开剪贴板 3.EmptyClipboard清空剪贴板,并把所有权分配给打开剪贴板的窗口 4.SetClipboardData设置剪贴板数据 ...

  5. MFC学习笔记(一)

    个人对MFC技术一直都很感兴趣,因为能够做出漂亮绚丽的界面应该是一件十分有成就感的事情. 学习的参考课本为北京博彦科技发展有限责任公司翻译的Jeff Prosise著的<MFC Windows程 ...

  6. MFC学习-第一课 MFC运行机制

    最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...

  7. 初识MFC学习——Hello World

    MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架, ...

  8. 我的MFC学习之路(一)

    因为项目需求,我开始应用MFC写程序.具体接触MFC的时间大概也有两个月了.现在的水平算是刚刚踏入了MFC大门的半只脚.目前能基本使用MFC Class Wizard,可以根据实例仿照完成需求,小范围 ...

  9. MFC学习指南大纲

    最近一直在做MFC的项目,顺便学习一下以下MFC核心知识吧: 大纲: 1. 消息队列 2. send message 3. post message 4. 面向对象编程 5. 指针 一个一个来学习哈.

随机推荐

  1. Ext JS treegrid 发生的在tree上增加itemclick 与在其它列上增加actioncolumn 发生事件冲突(event conflict)的解决办法

    Ext JS treegrid 发生的在tree上增加itemclick 与在其它列上增加actioncolumn 发生事件冲突(event conflict)的解决办法 最近在适用Ext JS4开发 ...

  2. bzoj2734 集合选数

    Description <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不能在该子集中 ...

  3. Puppet's Architecture 3.7

    Puppet configures systems in two main stages: Compile a catalog Apply the catalog The Agent/Master A ...

  4. 如何在VBA窗体中使用 DataGrid 控件?

    1.下载MSDATGRD.cab,下载路径如下:http://www.findthatzipfile.com/search-10500733-hZIP/winrar-winzip-download-m ...

  5. Perl参考函数

    这是标准的Perl解释器所支持的所有重要函数/功能的列表.在一个函数中找到它的详细信息. abs - 绝对值函数 accept - 接受传入的socket连接 alarm - 调度一个SIGALRM ...

  6. ROM, RAM, Flash Memory

    ROM Read-only memory (ROM) is a class of storage medium used in computers and other electronic devic ...

  7. Apriori 关联算法学习

    1. 挖掘关联规则 1.1   什么是关联规则 一言蔽之,关联规则是形如X→Y的蕴涵式,表示通过X可以推导“得到”Y,其中X和Y分别称为关联规则的先导(antecedent或left-hand-sid ...

  8. Spark配置参数调优

    1.配置多个executor 在项目中,由于数据量为几百万甚至千万级别,如果一个executor装载的对象过多,会导致GC很慢.项目中,我们使一个worker节点执行app时启动多个executor, ...

  9. BEvent_客制化BusinessEvent通过PLSQL Procedurer接受消息传递(案例)

    2014-06-27 Created By BaoXinjian

  10. Linux命令(16)压缩,解压文件

    tar: 简介:tar命令只是把目录打包成一个归档(文件),并不负责压缩.在tar命令中可以带参数调用gzip或bzip2压缩.因为gzip和bzip2只能压缩单个文件. 在linux下是不需要后缀名 ...