Coding & Programming/Network(TCP, IP, UDP)

[C/C++] 윈도우 소켓(Winsock) 1:N 채팅/통신 프로그램 구현하기 #2:: 프로그램 구조 및 Winsock 라이브러리 설정

mainCodes 2021. 4. 16. 10:28

안녕하세요 JollyTree입니다 (•̀ᴗ•́)و

 

1:N 채팅 프로그램은 기본적으로 TCP 프로토콜을 기반으로 1개의 서버가 N개의 클라이언트(사용자)를 지원합니다. 아래 개념도에서와 같이 각 클라이언트는 서버를 통해 서로 채팅 메시지를 주고받을 수 있어요.

 

채팅 프로그램 개념도
서버의 공지 메시지 전달



채팅 프로그램 기능

 

다음은 채팅 프로그램의 기본 기능입니다.

 

- 클라이언트 접속/종료 알림 기능 : 새로운 클라이언트가 접속하거나 접속을 종료하면 모든 클라이언트에게 알림
- 1:N 채팅 지원 기능 : 서버가 채팅 메시지를 모든 클라이언트에게 전달하여 1:N 채팅을 지원
- 서버 공지 기능 : 서버가 공지 메시지를 모든 클라이언트에게 전달
- 서버 종료 알림 기능 : 서버가 종료되면 모든 클라이언트에게 종료 메시지를 전달

 

Visual Studio 2019에서 소켓 프로그래밍을 하기 위해서는 Winscok 헤더와 라이브러리를 프로젝트에 추가해야 하는데요. 아래 내용을 참고해 주세요.

 

윈속(Winsock) 라이브러리 설정하기

 

윈속 라이브러리(ws2_32.lib)는 Visual Studio 2019를 설치한 환경이라면 추가적으로 설치할 필요 없이  프로젝트에 추가만 해주면 됩니다.

 

윈속 라이브러리를 프로젝트에 포함시키는 방법은 다음과 같으니 편리한 방법을 선택하여 설정하면 되겠습니다.

 

#pragma 전처리기(Preprocessor)를 이용한 방법

 

소스코드 내에 #pragma comment(lib, "ws2_32.lib")를 선언해 줌으로써 윈속 라이브러리 사용이 가능합니다.

 

#pragma comment(lib, "ws2_32.lib")

#include <stdio.h>
#include <WinSock2.h>
#include <process.h>
#include <string.h>

 

Visual Studio 2019 프로젝트 설정을 이용한 방법

 

아래 그림의 Property Pages는 Project-Properties 메뉴(단축키 : Alt+F7)를 통해 열 수 있습니다. ws2_32.lib를 Linker-Input-Additional Dependencies에 아래 그림과 같이 추가해 주세요.

 

소스코드에는 winsock2.h 헤더가 필요하니 #include <winsock2.h>와 같이 헤더 파일을 소스코드에 추가합니다.  이제 윈속 프로그래밍을 할 준비가 다 되었습니다. 이상 JollyTree였습니다 (•̀ᴗ•́)و