강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

유영재님의 프로필 이미지
유영재

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Session #1

안녕하세요 선생님 backlog : 최대 대기수 에 대해서 질문 드립니다.

작성

·

646

2

    class Listener

    {

        Socket _listenSocket;

        Action<Socket> _onAcceptHandler;

        public void Init(IPEndPoint endPoint, Action<Socket> onAcceptHandler)

        {

            // 문지기 생성 : 첫번째 인자에 네트워크 주소를 넣어줌 

            _listenSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            _onAcceptHandler += onAcceptHandler;   // 연결

            // 문지기 교육을 시킴 : 식당 주소와 포트번호를 기입

            _listenSocket.Bind(endPoint);

            // 영업 시작 : 리슨 소켓을 리슨 상태로 둔다. 

            // backlog : 최대 대기수 

            _listenSocket.Listen(10);

            // *** 초기화를 하는 시점에 등록을 해줄 것

            // 이 상태에서 클라가 connect 요청이 왔다고 한다면 

            // 콜백 방식으로 OnAcceptCompletd 함수 호출 된다.

            // 비동기 방식으로 예약만 하는 것

            // 낚시대를 10개를 꼽아 놓는다. 물고기가 많으면 ...

            // 문지기 10개 버젼

            for(int i = 0; i<10; i++)

            {

                // 문지기 1 버젼 

                SocketAsyncEventArgs args = new SocketAsyncEventArgs();

                args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted);

                RegisterAccept(args);

            }

        }

수업 예제 코드 중에 Listen 클래스 를 작성하실 때

리슨 소켓 하나 만들어주고 그놈을 서버 컴퓨터에 바인딩을

시켜준다음

리슨 함수를 호출해 주고, 이상태에서 클라쪽에서 신호가 오면 그 다음 처리를 해주는 코드 설명이셨는데

여기서 리슨 함수 인자를 10으로 놓고

for문을 10번 반복 하셔서 문지기를 10개를 생성하셨습니다.

질문 : 최대대기수가 10이라는 얘기는

클라이언트가 10명이 접속 한다는 얘기 인가요?

그래서 문지기를 10개를 생성 해주셨는지

이게 맞다면 클라이언트 접속이 대략 1000명을 예상한다면

리슨 함수 인자로 1000을 넣어줘야 하나요? 

퀴즈

네트워크 기초 이론 학습이 서버 프로그래밍에 중요한 이유가 무엇일까요?

서버 하드웨어 선택에 도움이 되어서

동시 접속 처리 및 해킹 방어 등 안정성 확보를 위해

데이터베이스 설계를 더 효율적으로 할 수 있어서

클라이언트 UI 디자인 실력을 향상시켜서

답변 2

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

질문 : 최대대기수가 10이라는 얘기는 클라이언트가 10명이 접속 한다는 얘기 인가요?

-> 그렇지 않습니다.

식당에서 실시간으로 사람들이 몰리면 대기열이 있고
보통 앉아서 기다릴 수 있는 의자들이 현관문에 있을텐데요.
그런 개념이 backlog라고 보시면 됩니다.
동접 1000명이라고 해도 정말 동일한 시점에 딱! 1000명에 입장할 일은 없을테니
그 정도로 크게 backlog를 잡지는 않습니다.

0

유영재님의 프로필 이미지
유영재
질문자

정말 비유를 잘 들어 주시네요 감사합니다. ^^ 이해했습니다.

유영재님의 프로필 이미지
유영재

작성한 질문수

질문하기