C++进程共享数据封装成类实例
C++进程共享数据封装成类实例
发布时间:2016-12-28 来源:查字典编辑
摘要:本文实例讲述了C++进程共享数据封装成类的方法,分享给大家供大家参考。具体方法如下:ShareMemory.cpp源文件如下:复制代码代码如...

本文实例讲述了C++进程共享数据封装成类的方法,分享给大家供大家参考。具体方法如下:

ShareMemory.cpp源文件如下:

复制代码 代码如下:#include "ShareMemory.h"

CShareMemory::CShareMemory(const char* pszMapName, int nFileSize, BOOL bServer):m_hFileMap(NULL),m_pBuffer(NULL)

{

if (bServer) //是服务端,就创建

{

m_hFileMap = ::CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE, 0, nFileSize, pszMapName);

}

else //否则就打开

{

m_hFileMap = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, pszMapName);

}

//把它映射到内存

m_pBuffer = ::MapViewOfFile(m_hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);

}

CShareMemory::~CShareMemory(void)

{

::UnmapViewOfFile(m_pBuffer);

::CloseHandle(m_hFileMap);

}

ShareMemory.h头文件如下:

复制代码 代码如下:#pragma once

#include <Windows.h>

class CShareMemory

{

public:

CShareMemory(const char* pszMapName, int nFileSize=0, BOOL bServer=FALSE);

~CShareMemory(void);

//属性

LPVOID GetBuffer() const

{

return m_pBuffer;

}

//实现

private:

HANDLE m_hFileMap;

LPVOID m_pBuffer;

};

使用时用法如下:

服务端:

复制代码 代码如下:#include "ShareMemory.h"

int main(int argc, char *argv[])

{

//进程间内存共享

LPCTSTR lpName= "hello";

LPCTSTR lpContent = "123456";

CShareMemory* pShareMemory = new CShareMemory(lpName, 20, FALSE);

LPVOID lpBase = pShareMemory->GetBuffer();

strcpy((char*)lpBase, lpContent);

printf("%sn",(char*)pShareMemory->GetBuffer());

getchar();

return 0;

}

客户端:

复制代码 代码如下:#include "ShareMemory.h"

int main(int argc, char *argv[])

{

//进程间内存共享

LPCTSTR lpName= "hello";

LPCTSTR lpContent = "123456";

CShareMemory* pShareMemory = new CShareMemory(lpName, 20, FALSE);

printf("%sn",(char*)pShareMemory->GetBuffer());

getchar();

return 0;

}

希望本文所述对大家的C++程序设计有所帮助。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C语言学习
热门C语言学习
编程开发子分类