본문 바로가기
Game Programming

CSocket Thread 를 이용한 고스트 클라이언트 (서버 과부하 테스트 유틸)

by 게임혼 2008. 8. 9.
서버하나 짜다가 고스트 클라이언트가 필요해서 만들어봤는데

일단 CSocket을 사용하다보니까 문제가 발견 되었다.

CSocket.send와 CSocket.Recieve 함수를 사용하는 경우 내부에서 쓰레드가 돌기 때문에

외부 쓰레드에서 제어하는 경우 뻗어버린다. 이를 위해서 CSocket.Detach 함수를 통해 CSocket 쓰레드를

중단시키고 얻어진 핸들을 이용해서 (핸들이란게 SOCKET이다) 내가 만든 쓰레드를 통해

send, rcev 시켜주면 된다. CSocket 함수가 아니라 윈속에 있는 함수로 써야한다.

BOOL    Socket::Detach()
00830 {
00831         if (!DeleteByHandler())
00832                 return false;
00833         if (m_pThread)
00834                 return false;
00835         if (m_detached)
00836                 return false;
00837         SetDetach();
00838         return true;
00839 }

다르게 보면 저런식이 원류라고 할 수 있지 않을까라는 생각도 했지만..

암튼 다 만들어보니 편하구나. 10ms 데이터 송수신을 처리하는 건 문제가 많았지만 ㅋㅋㅋ

(현재 하드로는 어려울 듯 하다)

www.gamehon.com www.gamemotor.com
사용자 삽입 이미지


'Game Programming' 카테고리의 다른 글

Data Packing Tool  (0) 2008.09.18
키 이벤트에 따른 속도저하  (0) 2008.08.29
redefinition; different subscripts C2369  (0) 2008.05.29
template error C2143  (0) 2008.05.19
헤쳐모여 알고리즘과 테스트  (0) 2008.04.08