상세 컨텐츠

본문 제목

VC++ 소켓통신_서버프로그램

C++,C#, ASP.NET

by 김일국 2018. 3. 15. 14:51

본문

오늘은 VC++ 프로젝트의 마지막인 통신프로그램을 실습하기로 합니다.

윈도우즈OS에 내장된 API인 소켓 인터페이스(MFC 소켓클래스: CAsyncSocket, CSocket)를 사용하여 OSI-7최상위인 어플리케이션(응용)계층의 통신프로그램(채팅)을 제작해 봅니다.

단계1: 서버프로그램 ( 리스터소켓, 클라이언트소켓 사용 )

단계2: 클라이언트프로그램 ( 커넥트소켓 사용 )

MFC응용프로그램 마법사 부터 시작합니다.

고급기능에 Windows 소켓 부분에 체크하는 부분이 다른 점 입니다.

클래스뷰 > 클래스 추가 > MFC클래스 > CListenSocket (기본클래스 CAsyncSocket에서 파생) 생성

같은 방법으로 클라이언트 접속시 생성하는 소켓 CClientSocket (기본클래스: CSocket 에서 파생) 을 생성한다.

CListenSocket 클래스에 매개변수 nErrorCode를 추가한 멤버함수(가상)를 추가해 준다.

CListetnSocket 클래스에 SendChatDataAll 멤버함수와 CloseClientSocket 멤버함수도 추가해 줍니다.

작업결과 실행화면(아래)-TCP/IP를 사용해서 그런지 최초 실행시 방화벽 보안경고가 나오네요^^

이번에는 소스추가한 부분이 많아서 .h 헤더(기본)파일과 .cpp 코드(구현)파일을 압축해서 올립니다.(아래)

ServerChat.zip



실행파일(아래)

ServerChat.exe



다음 포스트는 VC++ 실습 마지막인 클라이언트채팅 통신프로그램을 실습하는 것으로 마무리 합니다.

Ps.

Visual Studio C++에서 프로젝트 속성을
멀티바이트로 하면 "" 이렇게 문자를 입력하고
유니코드로 하면 L"" 이렇게 문자를 입력해야 한다.
예)
멀티바이트일때 AfxMessageBox("리스너 생성되었음.");
유니코드일때    AfxMessageBox(L"리스너 생성되었음.");
추천하는 방법   AfxMessageBox(_T("리스너 생성되었음."));
기본이 유니코드로 설정 되기 때문에 그대로 개발 했다가  멀티바이트로 변경 해야될때(외부 라이브러리와의 호환성 등)
L"" 이렇게 입력한 부분을 모두 찾아서 "" 이렇게 변경을 해줘야 한다.

그래서, 코딩시 문자를 "" 또는 L"" 이렇게 입력하지 말고, Win32에서는 TEXT("")를 쓰고 MFC에서는 _T("")를 사용하는 것을 추천합니다.

프로젝트의 문자집합 기본값 확인(아래)


ServerChat.zip
0.01MB
ServerChat.exe
9.74MB

'C++,C#, ASP.NET' 카테고리의 다른 글

포인터 자료형 해설  (0) 2018.09.25
VC++ 소켓통신프로그램_클라이언트  (0) 2018.03.16
VC++ GDI프로젝트_2  (0) 2018.03.12
VC++ GDI프로젝트_1  (0) 2018.03.11
VC++ 학사관리 실습(대화상자이용)  (0) 2018.03.09

관련글 더보기

댓글 영역