공유 메모리 예제
2016.09.09 21:13
◆ 공유 메모리 생성과 공유 메모리에 쓰기(서버)
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#define DATA_LEN 1024
LPSTR lpMapping;
int main()
{
BOOL bEnd = FALSE;
char szData[DATA_LEN];
char szNo[8];
HANDLE hMemMap = NULL;
while (1)
{
printf("1. 공유 메모리 데이터 쓰기\");
printf("0. 종료\");
printf("원하는 작업의 번호를 눌러주세요.");
gets(szNo);
switch (szNo[0])
{
case '1':
// 매핑 파일 만들기
hMemMap = CreateFileMapping((HANDLE)0xFFFFFFFF,
NULL,
PAGE_READWRITE,
0,
DATA_LEN,
"MemoryMapTest");
if (hMemMap == NULL)
return -1;
if (GetLastError() == ERROR_ALREADY_EXISTS)
printf("이미 매핑 오브젝트가 있음.\n");
// 파일에 매핑하기
lpMapping = (LPSTR)MapViewOfFile(hMemMap,
FILE_MAP_ALL_ACCESS,
0,
0,
0);
if (lpMapping == NULL)
return -2;
printf(" === 매핑 파일에 데이터 입력 ===\n");
gets(szData);
// 매핑 파일에 데이터 입력
strcpy(lpMapping, szData);
UnmapViewOfFile(lpMapping);
break;
case '0':
bEnd = TRUE;
break;
default:
printf("번호가 잘못됬어\\n");
break;
}
if (bEnd)
break;
}
if (CloseHandle(hMemMap) == 0)
printf("메모리맵 핸들 종료 실패\");
else
printf("메모리맵 핸들 종료 성공\");
return 0;
}
◆ 공유 메모리 열기와 공유 메모리의 데이터 읽기(클라이언트)
#include <stdio.h>
#include <windows.h>
#include <conio.h>
LPSTR lpMapping;
int main()
{
BOOL bEnd = FALSE;
char szNo[8];
HANDLE hMapRead;
while (1)
{
printf("1. 공유 메모리 데이터 읽기\");
printf("0. 종료\");
printf("원하는 작업의 번호를 눌러주세요.");
gets(szNo);
switch (szNo[0])
{
case '1':
// 매핑 파일 열기
hMapRead = OpenFileMapping(FILE_MAP_ALL_ACCESS,
FALSE,
"MemoryMapTest");
// 파일에 매핑하기
lpMapping = (LPSTR)MapViewOfFile(hMapRead,
FILE_MAP_ALL_ACCESS,
0,
0,
0);
if (lpMapping == NULL)
{
printf("읽기 실패\");
CloseHandle(hMapRead);
return -1;
}
// 읽어들인 데이터 출력
printf(lpMapping);
if (UnmapViewOfFile(lpMapping) == 0)
{
printf("\n읽기용 어드래스 매핑 실패\");
}
else
{
printf("\n읽기용 어드래스 매핑 성공\");
lpMapping = NULL;
}
CloseHandle(hMapRead);
break;
case '0':
bEnd = TRUE;
break;
default:
printf("번호가 잘못됬어\\n");
break;
}
if (bEnd)
break;
}
return 0;
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
1671 | 음란전화.... | 윤재원 | 2000.07.10 | 3884 |
1670 | 재원님이 퍼온 심리테스트...하하하 읽어봐라 | 재원님~ | 2000.07.12 | 3624 |
1669 | 의욕상실 | 채영광 | 2000.07.13 | 3949 |
1668 | Re: 의욕상실 | 한승석 | 2000.07.13 | 3407 |
1667 | Re: 사진 더 추가해줘잉 | 한승석 | 2000.07.13 | 3215 |
1666 | 비천무는 잼있다! | 채영광 | 2000.07.16 | 4091 |
1665 | 음악 니가 다 정리한 거야? | 채영광 | 2000.07.18 | 4489 |
1664 | 아주아주 멋진 시...한편..꼭 읽어봐랑~ | 재원님~ | 2000.07.18 | 3653 |
1663 | 승석아 오늘 오스키는 잘 보았니? | 채영광 | 2000.07.23 | 3605 |
1662 | Re: 비천무는 잼없다! | 헬로우멤 | 2000.07.24 | 3460 |
1661 | 비천무...말이지~~~ | 윤재원 | 2000.07.26 | 3619 |
1660 | 승석아 다다음주 말이야. | 채영광 | 2000.07.31 | 3468 |
1659 | 똑똑똑~~ | 조각가 | 2000.08.01 | 3641 |
1658 | 승석이오빠아...ㅜ.ㅜ 설가면 맛난거 사주우.ㅠ.ㅠ | 김승욱 | 2000.08.06 | 4337 |
1657 | 승석 X-ray는 많이 찍었니? | 정석원 | 2000.08.07 | 3837 |