- 리눅스 ( 우분투 18.04.0 LTS )
- 발표시에는 포트 포워딩을 이용하여 groom에 서버를 올려 외부에서 빙고게임 서버에 접속 가능하게 했습니다.
- 테스트시 여러 터미널을 띄우고 게임을 플레이 했습니다.
- bingo_server.c, bingo_client.c
- 서버
>cd ./src
>make
gcc bingo_client.c -o bingo_client -lpthread
gcc bingo_server.c -o bingo_server -lpthread
>./bingo_server [PORT]
- 클라이언트
>./bingo_client [IP] [포트]
- 서버는 2명의 사용자가 접속 할 때 마다 게임 방을 생성
- 플레이어들은 2명씩 나뉘어 게임을 진행
- 게임을 진행하며 채팅 가능
- 1:1 대결이며 서로 차례를 두고 먼저 5빙고를 달성한 플레이어가 승리하며 게임 종료
- 빙고판은 5X5 칸으로 생성되고 1~25 사이의 숫자로 랜덤 배치
- 같은 턴에 5 빙고를 달성할 시 무승부 처리
- 동일 아이디 접속 불가
- 회원 가입을 통한 아이디 접속
- data.txt에 기록
- 사용자가 들어오면 상대방을 만날때 까지 매칭을 기다린다.
- 각 방은 자식 프로세스를 만들어서 들어온 사용자 2명의 네트웍 버퍼를 넘겨준다.
- 이로써 서버에 각 게임 방과 연관없이 구동할 수 있다.
- 매칭된 플레이어는 숫자를 이용하여 빙고 게임을 하거나 채팅을 칠 수 있다.
- 클라이언트는 =[숫자]를 이용하여 빙고게임을 할 수 있다.
- 자신에 턴에만 빙고번호 말하기가 가능하다.
- 상대방과의 대화는 게임과 상관없이 계속 가능하다.
- 상대방이 강제 종료시 게임음 종료처리된다.
- 먼저 5빙고를 하면 게임이 끝나고 승패가 결정된다.
- 게임후 사용자는 방에서 나가진다.
- 자세한 내용은 발표자료를 읽어보세요!
TCP/src/
> bingo_server.c # 서버 파일
> bingo_client.c # 클라 파일
> Makefile # make , make clean
> data.txt # login data
사용자의 ID 와 PWD를 저장하는 텍스트 파일
> make # 실행 파일 생성
> make clean # 파일 제거
- 멀티 쓰레드와 멀티 프로세스를 활용하여 서버를 구축하며, 쓰레드와 멀티 프로세스를 사용하고 분배하는 방안을 익힐 수 있었다.
- 클라이언트간 통신을 위해 정해진 구조체와 문법을 사용하여, 통신하는 방법에 대해 자세히 익힐 수 있었다.
- 좀비 프로세스와 강제종료로 인한 예상치 못한 상황을 대처하기 위해 시그널을 이용하여, 이러한 문제들을 적절히 처리하고 대비하는 방법을 연습할 수 있었다.