Study/TIL(Today I Learned)

24.10.14 게임 서버

에린_1 2024. 10. 14. 21:37
728x90

최흥배님의

최흥배 C++ 네트워크 프로그래밍 분석&리팩토링 - GameProject3Re 를 보고 코드를 분석하고, 리팩토링을 진행한다.

게임서버

트러블 슈팅. 1

실행을 시키는데 오류가 뜬다. ? load error servercfg.ini 를 못 읽어오는 것 같다.

???

파일이 존재한다.

코드 관련 문제가 있을 것 같다.

이곳에서 return false;

경로를 절대 경로로 지정해주어서 문제를 해결했다.

왜 문제가 발생했는지 상대경로를 확인해보아서 문제가 어디서 발생했는지 확인했다.

파일의 경로는 …/…/EchoServer/파일.ini 이러했는데, 상대 경로가 …/…/EchoServer/x64/Debug 였다. 절대 경로에서 다시 상대경로로 바꿔주고 ServerCfg.ini 파일을 옮겨줘서 문제를 해결했다.

INIT

main.cpp

EchoServer.h

Init() 함수

main.cpp에서 Server.Init()을 실행한다.

Init()의 경우 EchoServer.h에 선언되어 있다.

StartNetwork를 실행하면 ServiceBase.h에 있는 StartNetwork() 함수가 실행이되고, 이 함수에서 NetManager의 Start() 함수를 실행시킨다.

Start() 함수에서 소켓 초기화와 같은 여러 초기화 작업을 진행한다.

이곳에서 CreateEventThread를 통해 이벤트 처리 스레드를 생성한다.

매개변수로는 항상 0을 넣고 있는데, GetProcessorNum() 함수를 통해 논리 프로세서의 수를 반환 받는다. 리눅스의 경우 싱글 스레드를 사용한다.

리눅스는 epoll과 같은 비동기 I/O 모델로 멀티스레딩 없이도 많은 네트워크 연결을 처리할 수 있기 때문에, 굳이 멀티스레드를 사용하지 않는다.

이후 StartNetListen()을 통해 소켓 listen과 bind를 진행한다.

728x90

'Study > TIL(Today I Learned)' 카테고리의 다른 글

24.10.18 UE5  (0) 2024.10.18
24.10.17 CS, UE5  (3) 2024.10.18
24.10.11 게임 서버  (0) 2024.10.11
24.10.10 게임서버  (4) 2024.10.10
24.10.08 UE5, CS  (8) 2024.10.08