본인이 처음 만든 상용 온라인 게임 서버 이다.(클라이언트는 없다)
- 중국에 몇 개월간 서비스 되었고, 회사는 망했다.
게임은 보드 게임으로 '바카라'이다.
이 게임 서버는 '영진 출판사'의 '온라인 게임 개발을 위한 Network Server Programming' 라는 책을 크게 참고 하였다.
- 그래서 이 책을 구해서 본다면 소스 코드 파악이 아주 쉬워질 것이다.
기본적으로 아래와 같은 문제가 있으므로 이 프로젝트를 클론 한 후 수정해 보기 바란다
(수정 후 알려주면 여기에 링크를 게시하겠다^^)
-
IOCP 스레드를 1개만 만들어서 사용하고 있다.
-
WSASend는 호출과 즉시 완료된다고 가정하고 있다
- 보낼 데이터를 버퍼로 보관하고 있어서 최악의 상황이 아니면 문제는 나타나지 않음
- DB 처리를 패킷 처리 스레드에서 바로 처리하고 있다.
- DB 대기 발생
-
유저 및 객체 관리를 링크드 리스트 자료 구조(게다가 직접 만든)를 사용하고 있어서 복잡하고 위험하다
-
accept 완료를 리모트가 접속 후 패킷을 보낸 이후에 감지한다.
- 악의적인 목적으로 리모트가 접속은 하루 패킷을 보내지 않으면 해당 세션은 낭비가 된다.
- OnTransFunc 배열 중 할당하지 않은 곳 접근 방어가 없음