서버에서의 Send
259
작성한 질문수 30
안녕하세요 강사님 항상 신속하고 정확한 답변에 다시한번 감사의 말씀드립니다. 다름이 아니라 여태 작성한 코드를 이해하기 위해 읽어보던중, 서버에서 클라로 데이터를 보내 Hello server! i am 10 과같은 정보들이 뜨는 과정을 이해하려 했습니다. 보면 Server program에서 GameRoom을 static 으로 받아서 안에 있는 코드가 실행된거 같은데 맞나요?
매번 강의 들으면서 코드를 이해하려고 노력하고 있습니다. 일단 기초가 너무 없어서 흐름이라도 알아야 나중에 뭐라도 할수 있을것 같아서요. 볼때마다 각각 클래스마다 조직적으로 깔끔하게 분리되어 아름답게 동작하는 느낌이 들지만, 읽고 이해하려고 보면 정말 머리가 아프고 어렵네요... ㅠㅠㅠ
답변 1
2
원래 네트워크 + 멀티쓰레드가 동시에 개입하면 코드가 원래 많이 복잡해집니다.
저도 처음 공부할 땐 많이 힘들었고 잘 이해가 안가는데 당연하다면 당연한겁니다.
서버의 경우:
- Listener (문지기)가 핵심이고
- 누군가가 접속하면 Listener가 Session을 새로 만들어주고
- 그 다음 패킷 전송이 오면 Session 쪽 코드에서 처리
- 그리고 실제 인게임 관련 코드는 GameRoom에서 처리
(지금은 간단하게 하기 위해 static이지만, 실제론 다수가 될 수 있음)
여기서 추가로 멀티쓰레드가 개입해서 Listener하는 애와
실제 패킷을 받는 애는 다른 쓰레드에서 처리하기 때문에 많이 어지럽습니다.
클라의 경우:
- Connector를 이용해 접속하고
- Session을 새로 만들어주고
- 실제 데이터를 보낼 떄는 Session.Send를 통해 보내줌
대략적으로 위와 같은데 breakpoint를 이리 저리 걸어보면서 살펴보시길 바랍니다.
그래도 한 번 이해하고 나면, C++ 서버도 거의 유사한 구조로 만들게 되어 이해하기 편합니다.
C#에서의 RAII
0
64
3
TLS 질문드립니다.
0
79
2
SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.
0
74
2
Unity Span
0
97
2
XML, Dll 차이점
0
134
2
Session 질문입니다
0
95
1
Write Read 커서 키워드
0
87
1
더미 클라이언트 수에 따른 OnDisconnect 발생
0
85
2
네트워크 Send 전담 스레드 배치
0
111
2
UnhandledException 으로 서버 터지는 경우
0
102
2
컨텐츠 단, 엔진 단
0
118
1
질문 있습니다
0
92
2
C# 게임서버 3D MMORPG
0
159
2
유니티6 버전
0
105
2
receive하는 부분과 send하는 부분의 차이
0
153
2
커서의 위치의 중요성
0
110
2
C++ 전혀 모르는데 C# 서버
0
176
2
강의에 질문이 있습니다
0
92
2
멀티스레드 이해도 질문
0
107
1
500 vs 500
0
147
3
OnAcceptHandler 액션 함수
0
70
1
이 정도 서버의 객관적인 수준이 궁금합니다.
0
204
2
36. Serialization #3 에서 string (name) 코드 수정 질문
0
85
2
외부 컴퓨터와의 통신 방법이 궁금합니다
0
112
1





