IOCP로 2P 대전슈팅게임 서버를 만들어 보려고 합니다.
한내
질문 제목 : 질문 내용 :
우선 거창하게 만드려는 것은 아닙니다. 대전슈팅 게임의 형식만 갖춰놓고, 기술적으로 서버가 동작하는 것만을
관찰하려는 것이거든요. 제작언어는 c를 생각하고 있습니다. iocp를 이용한 에코서버는 예제도 많고 해서 몇 번의 정복 후 이해를 했어요.
그런데 처음 막히는 곳이 버퍼더군요.
iocp는 하나의 버퍼를 갖고서 패킷을 송수신하는 것이 아니라 소켓마다 버퍼를 할당하는 구조가 기본이던데요.
여기서 질문이 생깁니다.tcp/ip이기 때문에 데이터가 붙어서 온다면 소켓마다 있는 버퍼에 데이터가 전부 도착하지 않을 수 있잖아요.
iocp는 비동기식이라 그 불완전한 패킷을 기다리지 않고 바로 넘어가 버릴텐데, 이럴 땐 어떻게 처리하나요?패킷을 다 받길 기다려야 하나요? 전부 받기를 기다린다면 그것은 비동기식이 아닌 것도 같고요,
아니면 continue시키고 넘어가나요? continue시키고 넘어가면
그 소켓의 패킷은 해당 버퍼에 차곡차곡 쌓여 있나요? 이런 것 이런 것들이 궁금해요.
또 한가지는 클라이언트에서 갖고 있는 플레이어의 정보와 서버에서 갖고 있는 플레이어의 정보를 패킷을 보낼 때마다
비교해야 하는지도 궁금합니다.
이동패킷을 보낸다고 가정하면, 이전 x,y값이 같은지, 기타 정보와도 같은지를 매 패킷마다 비교해야 하는 것이
옳은 방법인가가 질문입니다. 전에 장난식으로 만들었을 때는 매번 비교했어요.
더 효율적이거나 정석같은 방법이 있다면 약간의 조언을 부탁드립니다.