Programming/Network
Overlapped I/O
1. Non-blocking I/O와 Overlapped I/O의 차이? 일단 기존의 non-blocking I/O에 대해 알아보자. 기존의 소켓을 non-blocking 설정하고 recv()함수를 호출하게 되면, 해당 작업이 성공이든 실패이든 바로 함수를 리턴한다. 즉, 함수가 작업을 완료할 때까지 기다리지 않는다는 것이다. 성공을 하는 경우라면 소켓버퍼에 데이터가 차 있어서 바로 해당 데이터를 얻어 오는 경우이고, 실패하는 경우는 소켓버퍼에 데이터가 하나도 없을 때이다. 위에서 처럼 들어온 데이터가 하나도 없는데 recv()를 하려하면 WOULDBLOCK ERROR를 뱉어내는데, 이때 이벤트라던지 메세지를 통해서 데이터가 들어왔다는 것이 통보되면 그때 다시 한번 recv()를 호출해서 데이터를 소켓버..
2014. 9. 18.