다음을 배웁니다.
-
Socket
- 소켓 이해
- 옵션
-
TCP Server & Client 연결 ( TCP 연결과정 )
-
MultiThread Server ( 다수 Client 대응 서버 ) [ 동기 ]
-
MultiPlexingServer ( 다수 Client 대응 서버 성능개선 ) [ 비동기 ]
-
FileServer ( 전송하는 데이터양이 많아지는 TCP 연결 ) [규모 UP]
-
IOCP
connet, accept 를 수행하여 반환된 socket 은 서로 연결된 상태이다.
그럼 그 socket buffer 에 쓰면 전송되고, socket buffer 를 읽으면 읽어지고, 하는걸까.
마치 파이프로 연결된 수통처럼, 물을 붇기만 하면 옮겨가고, 할까?
그러면 버퍼는 어떻게 되지.
퍼올리면 비워지고, 하나?
MFC 기반 채팅서버
GUI 메시지큐 를 통해 비동기적으로 함수가 실행되고,
GUI 메시지큐 와 CAsyncSocket 이 연동해서 같이 돌면서
싱글스레드 인데, 멀티스레드 인 것처럼 작동한다.
MFC 로 만들겠다는것은 고성능이 될 수 없고,
프로토 타입정도만 될 수 있다.
-
비동기 입출력 처리를 지원
-
비동기 처리를 위해 GUI 메시지 큐 활용
-
내부적으로 이벤트 감시 방식(이벤트 풀링 방식)을 채택하고 있으며, 동시에 감시할 수 잇는 수가 매우 제한적이다 (64개 밖에 안된다. Client 수가 그 이상이면, 문제가 생길 수 있다.)
-
CAsyncSocket (소켓을 추상화한 클래스)
-
서버 소켓을 만든다.
-
데이터가 날라오고 있다는 것을 감시하고 있어야 하는데,
감시 하는 방식이 Event Select 방식이며,
CAsyncSocket 가 그 방식으로 작동된다.