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

WinSock Networking

WinSock으로 TCP·UDP 송수신과 논블로킹 I/O를 구현한 과제입니다. 수업에서 제공한 Lockstep 게임에 UDP 통신과 턴 번호·이동 좌표 직렬화를 추가했습니다.

C++WinSock2TCPUDPThreadsLockstep
OVERVIEW

프로젝트 소개

소켓 생성, 주소 변환, 연결, 송수신과 종료를 구현했습니다. UDP 메시지 통신부터 TCP 요청·응답, 서버의 클라이언트 처리 스레드까지 실습했습니다.

Lockstep 과제에서는 제공된 설정·접속·호스트 대기·플레이 상태 코드에 UDP 송수신과 턴·좌표 직렬화를 추가했습니다. 같은 컴퓨터에서 게임을 두 개 실행해 메시지를 주고받도록 했습니다.

MY CONTRIBUTION

맡은 일

01

소켓 연결과 종료

WSAStartup·socket·주소 설정과 TCP connect·listen·accept, UDP sendto·recvfrom을 사용했습니다. 오류 코드를 확인하고 shutdown과 소켓 정리를 처리했습니다.

02

논블로킹 송수신과 서버 스레드

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

03

Lockstep 게임 통신 연동

제공된 게임 상태 코드에 논블로킹 UDP 통신을 추가했습니다. 턴 번호와 이동 좌표를 직렬화해 보내고, 받은 메시지는 역직렬화해 게임 진행 코드에 전달했습니다.

DELIVERED WORK

개발 결과

  • TCP·UDP 소켓 연결·송수신·종료 · 논블로킹 I/O
  • 클라이언트 처리 스레드와 요청·응답
  • Lockstep 게임의 UDP 통신과 턴·좌표 직렬화

수업에서 제공한 Lockstep 게임에 통신 기능을 추가한 과제입니다. 게임 상태 구성은 제공 코드이며, 로컬 주소로 연결했습니다.

다음 프로젝트C++ Algorithms

포트폴리오 질문

질문 더 보기
최대 400자. Enter 전송, Shift+Enter 줄바꿈.