* 소켓
소켓이란 네트워크 프로그래밍의 기초가 되는 내용이다.
서버와 클라이언트간의 통신을 위하여 연결 고리를 제공해주며 정보교환도 가능하다.
* 동기 소켓
* 읽기 : Read Buffer가 비어 있을 경우 내용이 들어 올 때까지 Blocking 된다.
* 쓰기 : Write Buffer가 꽉 차 있을 경우 Buffer가 비어 있을 때까지 Blocking 된다.
* 접속 : 연결의 완전히 이루어 질 때까지 Blocking 된다.
* Blocking : 프로그래밍에서 쉽게 말하자면 다음 작업을 실행하지 않는다.
동기 소켓은 Blocking 상태일 경우 어떠한 작업도 실행하지 않는다. 이러한 던점을
보완하기 위해서 Thread를 이용하거나 이벤트를 이용할 수 있다.
* 비동기 소켓
* 읽기 : Read Buffer가 비어 있을 경우 -1를 리턴한다.
* 쓰기 : Write Buffer가 꽉 차 있을 경우 -1를 리턴한다.
* 접속 : 연결이 완전히 이루어지 않더라도 곧바로 결과를 리턴하며, 후에
getsockopt으로 연결이 완전히 이루어졌는지 확인가능하다.
CSocket Class는 동기 소켓이며 함수가 호출 됐을때 그 함수가 끝나기 전 까지 함수를 리턴하지 않고 블럭 상태로 기다린다.
Send를 하면 보내기를 완료 할때까지 다음 단계로 넘어가지 않는다.
때문에 직관적으로 이해하기 쉽고 적은 노력으로 큰 효과를 얻을 수 있다.