随想录(基于内存映射的进程通信)_第1页
随想录(基于内存映射的进程通信)_第2页
随想录(基于内存映射的进程通信)_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 随想录(基于内存映射的进程通信)【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing 】    在通信协议的开发中,有的时候为了本地调试的需要,需要实现进程之间的通信。在windows系统中,进程通信的方式很多,比如说有管道通信、内存映射、socket通信、剪切板通信等等。但是,其中,我认为最好的方式还是内存映射的方式,简单、明了。因为通信的数据是被很多进程共享的,所以必要的互斥措施是非常必要的。只要处理好互斥的关系,内存映射可以为我们做好不少事情。     在内存映射中,所需要的基本函数其

2、实非常简单:(1)创建文件映射,即函数CreateFileMapping;(2)打开文件映射,即函数OpenFileMapping;(3)关闭文件映射,即函数UnmapViewOfFile。名称是server和client识别的唯一媒介。下面就是一个范例,贴出来的代码是一个简单的服务端和客户端代码,略带修改。源代码来自于精通Windows API,函数、接口、编程实例,请注意版权声明。    服务端代码如下所示,1. #include    2. #include    3. #include 

3、   4.   5. #define BUF_SIZE 256  6.   7. LPTSTR szName = TEXT("mapObject"  8. LPTSTR szMsg = TEXT("msg"  9.   10.   11. void main(int argc, char*

4、 argv  12.   13.     HANDLE  hMapFile;  14.     LPTSTR pBuf;  15.       16.     hMapFile = CreateFileMapping(  17.   

5、60;     INVALID_HANDLE_VALUE,  18.         NULL,  19.         PAGE_READWRITE,  20.         0,  21.   

6、0;     BUF_SIZE,  22.         szName  23.       24.       25.     if(hMapFile = NULL | hMapFile = INVALID

7、_HANDLE_VALUE  26.       27.         return;  28.       29.       30.     pBuf = (LPSTRMapViewOfFile(hMapFile, 

8、0;31.         FILE_MAP_ALL_ACCESS,  32.         0,  33.         0,  34.         BUF_SIZE;  35.  

9、;     36.     if(NULL = pBuf  37.       38.         return   39.       40.       41.  

10、;   CopyMemory(pBuf, szMsg, strlen(szMsg;  42.     getch(;  43.       44.     UnmapViewOfFile(pBuf;  45.     CloseHandle(hMapFile;  46.  

11、60;    客户端代码如下,1. #include    2. #include    3. #include    4.   5. #pragma comment (lib, "User32.lib"  6. #define BUF_SIZE 256  7.   8. LPTSTR szName =

12、60;TEXT("mapObject"  9.   10. void main(int argc, char* argv  11.   12.     HANDLE  hMapFile;  13.     LPTSTR pBuf;  14.      

13、0;15.     hMapFile = OpenFileMapping(  16.         FILE_MAP_ALL_ACCESS,  17.         FALSE,  18.         szName 

14、60;19.       20.       21.     if(hMapFile = NULL   22.       23.         return   24.     

15、;  25.       26.     pBuf = (LPSTRMapViewOfFile(hMapFile,  27.         FILE_MAP_ALL_ACCESS,  28.         0,  29.  &

16、#160;      0,  30.         BUF_SIZE;  31.       32.     if(NULL = pBuf  33.       34.         return   35.   

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论