欢迎来到代码驿站!

C代码

当前位置:首页 > 软件编程 > C代码

C++进程共享数据封装成类实例

时间:2020-11-09 17:52:50|栏目:C代码|点击:

本文实例讲述了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("%s\n",(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("%s\n",(char*)pShareMemory->GetBuffer()); 
    getchar(); 
    return 0; 
}

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

上一篇:C++运算符重载 成员函数与友元函数详解

栏    目:C代码

下一篇:C++实现学生管理系统示例解析

本文标题:C++进程共享数据封装成类实例

本文地址:http://www.codeinn.net/misctech/20602.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有