일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- xml
- PostgreSQL
- MySQL
- MFC
- 기초
- 입문
- c#
- SDK
- dll
- Firebird
- winsock
- 셋업
- 파이어버드
- 시리얼 통신
- 초보
- 인스톨
- VB.NET
- 설치
- Visual Basic
- 파라미터
- SQL
- 문자열
- WIN32 SDK
- 예제
- vb
- 데이터베이스
- 소니
- Visual Studio 2005
- Delphi
- 델파이
- Today
- Total
프로그래밍 노트
유명한 파이프 만들기 (클라이언트쪽) 본문
======================================================================
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#define EvtName "PipeEvent"
#define PipeName "\\\\.\\pipe\\TestPipe"
HANDLE hEvent, hFile;
int main()
{
char szBuf[1024];
DWORD dwWritten;
hEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, EvtName);
if (hEvent == NULL)
{
printf("이벤트 열기 실패\");
_getch();
return -1;
}
hFile = CreateFile(PipeName,
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("파이프 접속 실패\");
CloseHandle(hFile);
_getch();
return -2;
}
while (1)
{
printf("송신 데이터>");
gets(szBuf);
if (strcmp(szBuf, "quit") == 0)
{
SetEvent(hEvent);
WriteFile(hFile, szBuf, (int)strlen(szBuf), &dwWritten, NULL);
break;
}
SetEvent(hEvent);
WriteFile(hFile, szBuf, (int)strlen(szBuf), &dwWritten, NULL);
}
if (CloseHandle(hFile))
{
printf("파이프 끊기\");
}
printf("서버부터의 이벤트 대기중\");
WaitForSingleObject(hEvent, INFINITE);
printf("아무 키나 누르세요\");
_getch();
return 0;
}
======================================================================
이것도 서버쪽과 같은 방법으로 빌드한다.
서버쪽을 먼저 실행시키고 클라이언트를 실행시켜서 클라이언트 쪽에서 데이터를 입력하고 엔터를 치면 서버쪽에서 클라이언트 쪽에서 송신한 데이터를 수신하고 클라이언트쪽에서 "quit"라고 입력하면 서버쪽이나 클라이언트 쪽 모두 종료하게 되어있다.