MFC Socket 사용시 유의점

socket.IOCtl( FIONREAD, &avail ); // avail에 읽을 수 있는 양이 들어간다.
socket.Receive( pBuf, avail ) // 하지만 avail 만큼 다 못 읽을 경우가 있다.

따라서

MFC CAsyncSocket 사용시 유의사항

1. 소켓 API를 이용하여 특정 크기의 데이터를 보내면 나눠지거나 합쳐지는 경우가 있는가?

2. 송신자가 100바이트를 전송하여 수신자의 OnReceive함수가 호출 되었다.
그러나 그 함수 에서 50 바이트만 Receive했을 경우 다시 OnReceive함수가 호출되는가?

3. 위와 같은 경우에서 50 바이트가 아니라 아예 Receive를 하지 않은 경우는 어떻게 되는가?

4. 특정 데이터 크기 단위로 받아서 처리하는 로직을 구성하려 한다.
송신자는 데이터 단위당 그 크기를 4바이트 정수로 데이터 앞에 붙여서 보낸다.
다음과 같이 구성하여 완전한 길이의 데이터가 들어왔을때만 메세지를 보내도록 하였다.
이것이 잘 동작하는가? 문제가 있다면 무엇인가?
5. 소켓버퍼에 데이터가 있더라도 인위적으로 OnReceive가 호출 되지 않도록 할 수 있는가?

6. 데이터 크기를 명시하여 잘 동작하는 패킷 전송 프레임웍을 구현해보라.

+ Recent posts