프로젝트 목록
소켓·상태 동기화 프로젝트 · 2024 가을 · CS260

WinSock Networking

TCP·UDP 송수신과 논블로킹 I/O를 구현한 WinSock 과제입니다. 제공된 Lockstep 게임에 UDP 통신과 턴·좌표 직렬화를 연결했습니다.

C++WinSock2TCPUDPThreadsLockstep
OVERVIEW

프로젝트 소개

WinSock으로 소켓 생성·주소 변환·연결·송수신·종료를 구현했습니다. UDP 메시지 통신에서 TCP 요청·응답, 클라이언트를 처리하는 스레드로 범위를 넓혔습니다.

Lockstep 과제에서는 수업에서 제공한 설정·접속·호스트 대기·플레이 상태 흐름에 UDP 통신과 턴·좌표 직렬화를 연결했습니다. 같은 컴퓨터의 두 실행 인스턴스가 메시지를 주고받는 구조를 다뤘습니다.

MY CONTRIBUTION

담당한 구현

01

연결부터 종료까지의 소켓 흐름

WSAStartup, socket, 주소 설정과 TCP connect·listen·accept, UDP sendto·recvfrom을 다뤘습니다. 오류 코드 확인과 shutdown·소켓 정리까지 연결했습니다.

02

논블로킹 I/O와 요청·응답

FIONBIO를 통한 논블로킹 설정과 WSAEWOULDBLOCK 상태를 확인하는 전송·수신 루프를 구현했습니다. 서버에서 클라이언트를 처리하는 worker thread와 기본 요청·응답 구조도 작성했습니다.

03

제공된 게임 상태에 통신 연결

제공된 Lockstep 상태 흐름에 논블로킹 UDP 연결·송수신을 구현했습니다. 턴 번호와 이동 좌표를 직렬화·역직렬화해 수신 상태를 게임 진행 코드에 전달했습니다.

DELIVERED WORK

구현 결과

  • TCP / UDP · Socket lifecycle · Nonblocking I/O
  • Client worker thread와 요청·응답
  • 제공 Lockstep 상태 흐름 · UDP 연결 · 턴·좌표 직렬화

TCP·UDP 통신을 실습하고, 제공된 Lockstep 게임의 상태 흐름에 UDP 송수신과 턴 정보 직렬화를 연결한 과제입니다. Lockstep 연결은 로컬 주소를 사용하는 학습용 구성입니다.

다음 프로젝트C++ Algorithms