Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1119400
  • 博文数量: 284
  • 博客积分: 8223
  • 博客等级: 中将
  • 技术积分: 3188
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-01 13:26
文章分类

全部博文(284)

文章存档

2012年(18)

2011年(33)

2010年(83)

2009年(147)

2008年(3)

分类: C/C++

2009-11-03 20:23:41

服务器端代码:(服务器端与客户端基本代码都差不多,只是在main函数中调用的参数不一样,具体请参考下面的代码端)

#include <windows.h>
#include <process.h>
#include <stdlib.h>
#include <stdio.h>
#include <TCHAR.h>
#include <iostream>
using namespace std;

class CShareMessage
{
 public:
   CShareMessage(LPCTSTR lpszFileName,int nFileSize,int bServer);
   ~CShareMessage();
 private:
   HANDLE m_hFileHandle;
   LPVOID m_pBuffer;
};
 
CShareMessage::CShareMessage(LPCTSTR lpszFileName,int nFileSize,int bServer)
{
  if(bServer)
  {
    m_hFileHandle=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,nFileSize,lpszFileName);
   
  }
  else
  {
    m_hFileHandle=OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,lpszFileName);
  }
 
  m_pBuffer=(LPVOID)MapViewOfFile(m_hFileHandle,FILE_MAP_ALL_ACCESS,0,0,0);
  if(bServer){
     *(DWORD*)m_pBuffer=200;
  }else{
        printf("m_pBuffer=%d\n", *(DWORD*)m_pBuffer);
  }
  
}
 
CShareMessage::~CShareMessage()
{
  UnmapViewOfFile(m_pBuffer);
  CloseHandle(m_hFileHandle);
}

int main(int argc,char **argv[]){
    CShareMessage ser(_T("MyData"), sizeof(DWORD), 1);
    Sleep(10000);
}

 

客户端代码:

#include <windows.h>
#include <process.h>
#include <stdlib.h>
#include <stdio.h>
#include <TCHAR.h>
#include <iostream>
using namespace std;

class CShareMessage
{
 public:
   CShareMessage(LPCTSTR lpszFileName,int nFileSize,int bServer);
   ~CShareMessage();
 private:
   HANDLE m_hFileHandle;
   LPVOID m_pBuffer;
};
 
CShareMessage::CShareMessage(LPCTSTR lpszFileName,int nFileSize,int bServer)
{
  if(bServer)
  {
    m_hFileHandle=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,nFileSize,lpszFileName);
   
  }
  else
  {
    m_hFileHandle=OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,lpszFileName);
  }
 
  m_pBuffer=(LPVOID)MapViewOfFile(m_hFileHandle,FILE_MAP_ALL_ACCESS,0,0,0);
  
  if(bServer){
     *(DWORD*)m_pBuffer=100;
  }else{
        printf("m_pBuffer=%d\n", *(DWORD*)m_pBuffer);
  }
}
 
CShareMessage::~CShareMessage()
{
  UnmapViewOfFile(m_pBuffer);
  CloseHandle(m_hFileHandle);
}

int main(int argc,char **argv[]){
    CShareMessage ser(_T("MyData"), sizeof(DWORD), 0);
}


阅读(6339) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~