inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

JobQueue #2

Listener 관련 질문

354

한종훈

작성한 질문수 22

0

강의 내 1:45초쯤 더 많은 손님을 받을수 있도록 Listener에 for문을 추가하였습니다.

RegisterAccept -> (socket.AcceptAsync) -> OnAcceptCompleted -> RegisterAccept로 이어지는 loop가 10개 생성되었다고 이해했습니다.

그렇다면 하나의 ListenSocket에 10개의 loop가 묶여있는 상태에서 client로부터 온 소켓들이 어떻게 하나씩 배치될수 있나요?  다른 loop에 같은 소켓이 배치될수도 있을것 같은데 아무리 생각해도 이 부분이 이해가 잘 안가서 질문드립니다.

강의 잘 수강하고 있습니다. 감사합니다.

C# unity network

답변 2

0

한종훈

답변 감사합니다

혹시라도 운이 없어서 하나의 물고기에 2개 이상의 낚시대가 반응 (args.completed 이벤트 발생)할수도 있다고 생각했는데 그러한 일이 발생할수도 있나요? 

0

Rookiss

그럴 순 없습니다!

0

한종훈

감사합니다

0

Rookiss

애당초 클라에 배치되는건 listenSocket이 아니고, 별도로 소켓을 만들어줍니다.
listenSocket은 정말로 문지기의 영업용 휴대폰 같은 개념이고 손님들과는 무관합니다.

0

한종훈

답변 감사합니다

수업중

SocketAsyncEventArgs args = new SocketAsyncEventArgs();

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

RegisterAccept(args);

에서 for문을 추가하여 

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

{

SocketAsyncEventArgs args = new SocketAsyncEventArgs();

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

RegisterAccept(args);

}

으로 Listener가 더 많은 손님을 받을수 있도록 변경하셨다고 하였는데 이부분이 잘 이해가 되지 않습니다. 

감사합니다

 

0

Rookiss

RegisterAccept 코드에서 실제로 Accept 비동기 코드를 실행하는데,
1번 호출했으면 1번 손님을 받고 끝나는겁니다. (다시 Register하기 전까진)
낚시에 비유하면 낚시대가 1개라면 물고기도 한 번에 딱 한마리만 낚을 수 있겠죠?
그리고 물고기를 끌어올린 다음에 다시 낚시대를 던져서 낚시를 이어나가게 될겁니다.
for문으로 SocketEventArgs를 여러개 만들어 Register를 다수 실행하는 것은
마치 낚시대를 10개 동시에 물에 넣는 것과 유사합니다.

TLS 질문드립니다.

0

57

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

57

2

Unity Span

0

82

2

XML, Dll 차이점

0

111

2

Session 질문입니다

0

84

1

Write Read 커서 키워드

0

79

1

더미 클라이언트 수에 따른 OnDisconnect 발생

0

76

2

네트워크 Send 전담 스레드 배치

0

100

2

UnhandledException 으로 서버 터지는 경우

0

91

2

컨텐츠 단, 엔진 단

0

108

1

질문 있습니다

0

78

2

C# 게임서버 3D MMORPG

0

153

2

유니티6 버전

0

100

2

receive하는 부분과 send하는 부분의 차이

0

135

2

커서의 위치의 중요성

0

105

2

C++ 전혀 모르는데 C# 서버

0

171

2

강의에 질문이 있습니다

0

89

2

멀티스레드 이해도 질문

0

98

1

500 vs 500

0

132

3

OnAcceptHandler 액션 함수

0

64

1

이 정도 서버의 객관적인 수준이 궁금합니다.

0

194

2

36. Serialization #3 에서 string (name) 코드 수정 질문

0

84

2

외부 컴퓨터와의 통신 방법이 궁금합니다

0

107

1

스핀락 질문.

0

111

2