현재 개발중인 게임을 Winsock2 TCP모드(IOCP)를 사용해서 서버/클라이언트를 만들었습니다.
그런데 잘 돌아가다가-_- 중간에 패킷이 새는건지 데이터가 이상하게 오는건지
데이터가 잘못 전송되는 현상이 일어나는데요...
내부 테스트를 하면 그런 현상이 아주 가끔씩 일어나구요,
외국쪽 분하고 플레이를 하면 거의 100% 게임 한판이 끝나기전에 일어납니다.
(핑이 높으면 쉽게 발생한다는 말 같습니다.)
이론적으로는 TCP 모드는 데이터 순서를 포함한 무결성을 보장한다고 하는데,
책을 보면 실제로는 이론대로만 흘러가지는 않는다고 한마디정도는 적혀있는데...
실제로 TCP가 아주 가끔 못믿을짓을 하는지, 아니면 제가 그저 잘못 짠 확률 100%인지(-_-) 궁금합니다.
(일단 제가 참조한 책은 Network Game Server programming 입니다.)
테스트인원은 10~15명 내외, 서버-_- 사양은 펜 1.5G/ 램 768M, win2003입니다. 아직 DB는 사용하지 않고 있구요.
게임 특성상 서버가 왠만하면 먼저 스스로 데이터를 보내지 않고, 데이터가 들어와야만 응답을 보내는 것에 가깝습니다.
(그렇지만 당연히 메시지 큐 프로시저는 쓰레드로 돌아갑니다; )
현재는 TCP의 무결성을 믿고-_- 한번 보낸 데이터는 잘 갔는지 말았는지 확인도 안하구요.
만약 TCP를 아주 믿지는 못한다면 상태 종종 체크해가며 명령 재전송도 해줘야 할거같습니다.