overlapped i/o iocp 프로그래밍 관련 질문 드립니다.
글쓴이: hywook4 / 작성시간: 목, 2018/07/19 - 9:12오전
안녕하세요. 이번에 iocp 소켓 프로그래밍을 처음 시작하게 되었습니다.
그냥 간단한 에코서버를 구현하는데
서버쪽은 아무 이상없이 잘 돌아가는것으로 확인이 된...것 같습니다.
이제 문제는 클라이언트 쪽인데,
클라이언트에서 WSASend를 하고 서버에서는 그 메세지를 받아서 출력 후에,
받은 메세지의 맨 앞만 '*'로 바꾸고 4개의 길이만 돌려보내는 방식으로 만들어 놨습니다(테스트를 위해)
그런데 클라이언트쪽에서 recv를 제대로 하지 못하는 사태가 발생하였습니다.
우선 위에서 서버가 보내는 데이터의 예시를 드리면
클라이언트가
'asdf1234' 를 보내면 서버는
'*sdf' 를 보내는 방식입니다.
여기서 문제가, 클라이언트쪽에서 WSARecv를 이용해서 받을 경우, IO_PENDING이야 당연히 걸리는것이 맞는데,
계속 작업이 끝나지를 않는지, recvByte도 항상 0이고 그냥 데이터를 받지를 못하는 사태가 발생합니다.
혹시 서버가 잘못되었는지를 확인하기 위해서 여러 디버깅을 해보았지만, 나중에
클라이언트 쪽에서 WSARecv 가 아닌 recv를 사용했을 시에는, 서버에서 의도한 대로 4byte를 받고
데이터도 정상적으로 받았습니다.
무엇이 문제일까요?... 정말 하루종일 고민하고 고쳐보다가 질문드립니다 ㅠ...
Forums:
댓글 달기