[게임 서버] Listener, 네트워크 연결을 기다려보자
·
공부/게임 서버
서버와 클라이언트의 연결을 기다리는 용도의 Listener 클래스는 시작점인 Init, 기다리는 연결이 바로 실행될 수 있음을 확인하는 RegisterAccept, 연결 완료를 담당하는 OnAcceptCompleted, 연결을 받아들이는 Accept 함수로 구성된다. Socket _listenSocket; Action _onAcceptHandler; // Accept가 완료됐을 때 어떻게 처리할 것인지 담당. public void Init(IPEndPoint endPoint, Action onAcceptHandler) { _listenSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); // AddressFami..
[게임 서버] Listener의 반대 개념, Connector에 대해서
·
공부/게임 서버
서버를 만들 때 Listener라는 이름으로 클라이언트의 연결 요청을 기다리는 클래스를 만들게 된다. 그 반대 입장으로 서버에서 서버와 클라이언트의 연결을 직접 하는 클래스를 만들어야 하는데 내가 배운 강의에서는 그 이름을 Connector라 한다. Connector를 따로 만드는 가장 큰 이유 2가지는 1️⃣ 서버 코어 안에서 클라이언트와 연결하는 일이 필요할 때 범용적으로 사용하기 위해, 2️⃣ 나중에 게임 서버를 본격적으로 만들 때 몬스터 관리, 아이템 관리 등 여러가지 서버가 생기게 되는데 이때 그 서버를 서로 연결하고자 할 때 사용하기 위해서다. Connector는 전체적으로 Listener와 흡사한 구조를 갖고 있다. Connector를 호출할 때 사용하게 되는 Connect 함수, 연결을 예..
[게임 서버] TCP와 UDP
·
공부/게임 서버
TCP와 UDP는 데이터를 전송할 때 사용하는 프로토콜이다. OSI 7계층과 TCP/IP 모델의 전송계층에서 사용된다. TCP 연결형 서비스다. 전화 통화를 상상해보자. 내가 누군가와 통화를 하고 "안녕하세요? 오늘 날씨가 좋아요"라고 말한다면 듣는 사람의 입장에서도 "안녕하세요? 오늘 날씨가 좋아요"라고 같은 순서로 이야기를 전달받게 된다. TCP도 같다. 논리적 경로가 있으며, 전달 순서가 보장된다. 전달할 데이터를 분실했을 경우 자신이 책임지고 다시 데이터를 보내준다. 신뢰도가 높다. 데이터 흐름 제어, 혼잡 제어를 해준다. UDP 비연결형 서비스다. 오토바이 퀵 배달을 상상하면 쉽다. 퀵은 빠르다. 꼭 전달자가 보내는 순서대로 도착한다는 보장은 없다. UDP도 비슷하다. 연결 없이 통신이 가능하다..