Skip to content

공유 메모리 예제

2016.09.09 21:13

WHRIA 조회 수:136

http://wwwi.tistory.com/63

 

◆ 공유 메모리 생성과 공유 메모리에 쓰기(서버)

#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;

}

번호 제목 글쓴이 날짜 조회 수
1504 한! 내 개장 홈을 링크해줘! 채영광 2000.08.18 3959
1503 착한 사람 WHRIA 2007.05.17 3955
1502 음란전화.... 윤재원 2000.07.10 3917
1501 의지 WHRIA 2007.05.14 3913
1500 승석아 광주 못와? 채영광 2000.08.08 3890
1499 Windows Key 의 활용 IDEON 2003.06.15 3885
1498 승석 X-ray는 많이 찍었니? 정석원 2000.08.07 3861
1497 Raptor han 2007.06.21 3858
1496 승석아 재호 2000.08.26 3840
1495 최평균 file WHRIA 2007.03.05 3836
1494 ◆ 어느 여학생의 비밀 한승석 2000.08.26 3782
1493 하이... 2000.06.11 3776
1492 승석아-2 재호 2000.08.14 3738
1491 공동개원 WHRIA 2012.02.11 3714
1490 승석아....아래 저 아가씨는 누구냐? 윤재원 2000.08.09 3711

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소