Computer Science 기본 지식/소켓 프로그래밍

[게임 서버 프로그래밍 교과서] 블로킹 소켓 ManyClient - ManyServer 구조

로파이 2021. 8. 19. 00:09

에코 메세지를 송수신하는 예제

 

1. 서버는 메인 스레드와 자식 스레드 두 개를 가진다.

- 메인 스레드는 에코 메세지를 송신한 이후 할 일이 끝난 RemoteClient 인스턴스를 제거한다.

- 자식 스레드는 서버 소켓으로 부터 Accept될 때 마다 RemoteClient를 생성하고 클라이언트 소켓과 에코 메세지를 송신할 작업을 할당한다.

 

2. Remote Client의 Echo Thread

Echo Thread에서는 Receive()를 통해 메세지를 수신하고 다시 메세지를 전송한다. (Echo)

소켓을 닫고 현 작업에 해당하는 RemoteClient를 제거할 준비를 한다.

메인 스레드의 세마포어에 이 사실을 알린다.

 

3. 에코 이후 Main Thread의 역할

에코 작업이 끝날 때마다 세마포어가 활성화되고 RemoteClient 인스턴스를 제거한다. 

 

- 작업 흐름 순서