메모내용

다음을 배웁니다.

  1. Socket
    1. 소켓 이해
    2. 옵션
  2. TCP Server & Client 연결 ( TCP 연결과정 )
  3. MultiThread Server ( 다수 Client 대응 서버 ) [ 동기 ]
  4. MultiPlexingServer ( 다수 Client 대응 서버 성능개선 ) [ 비동기 ]
  5. FileServer ( 전송하는 데이터양이 많아지는 TCP 연결 ) [규모 UP]
  6. IOCP

connet, accept 를 수행하여 반환된 socket 은 서로 연결된 상태이다. 그럼 그 socket buffer 에 쓰면 전송되고, socket buffer 를 읽으면 읽어지고, 하는걸까. 마치 파이프로 연결된 수통처럼, 물을 붇기만 하면 옮겨가고, 할까? 그러면 버퍼는 어떻게 되지. 퍼올리면 비워지고, 하나?

MFC 기반 채팅서버

GUI 메시지큐 를 통해 비동기적으로 함수가 실행되고, GUI 메시지큐 와 CAsyncSocket 이 연동해서 같이 돌면서 싱글스레드 인데, 멀티스레드 인 것처럼 작동한다.

MFC 로 만들겠다는것은 고성능이 될 수 없고, 프로토 타입정도만 될 수 있다.

  • 비동기 입출력 처리를 지원
  • 비동기 처리를 위해 GUI 메시지 큐 활용
  • 내부적으로 이벤트 감시 방식(이벤트 풀링 방식)을 채택하고 있으며, 동시에 감시할 수 잇는 수가 매우 제한적이다 (64개 밖에 안된다. Client 수가 그 이상이면, 문제가 생길 수 있다.)
  • CAsyncSocket (소켓을 추상화한 클래스)
    • 서버 소켓을 만든다.
    • 데이터가 날라오고 있다는 것을 감시하고 있어야 하는데, 감시 하는 방식이 Event Select 방식이며, CAsyncSocket 가 그 방식으로 작동된다.