해결된 질문
작성
·
338
·
수정됨
0
안녕하세요. 선생님!
프로토콜 설계관련 큰 흐름을 정리 해보고 있습니다.
주요 포인트는 서버에서 관리(TCP로 연결된 소켓)하고있는 클라이언트들의
요청을 어떤 구조로 처리할지?
총 3가지 형태로 정리되었습니다.
1. 블록
강의 : 멀티쓰레드 채팅서버 구조(블록 소켓)
2. 논블록
강의에는 없지만, 하나의 쓰레드에서 여러 논블록 소켓들 돌며 Receive를 확인하는 구조
3. 비동기
강의 : IOCP기반 채팅서버(클라이언트 수신처리를 OS에 등록하여 콜백 받는구조)
궁금한 부분은
다양한 프로토콜 설계를 "큰 주제"로 나눈다면
블록/ 논블록/ 비동기 이렇게 3가지 형태로 나누어도 크게 문제가 없을 지 궁금합니다.
답변 1
1
음...우선 IOCP는 Non-blocking I/O 범주에 포함되어야 합니다. 그리고 구조에 따라 스레드 개수는 달라질 수 있겠습니다. 중요한 것은 이 모든 분류는 입/출력 방식에 관한 것으로 프로토콜과는 관련이 없습니다. 프로토콜은 입/출력 데이터 형식에 직접적으로 관련이 있다 하겠습니다. Blocking, Non-blocking, IOCP는 입/출력 구조에 관한 분류입니다. 참고하시기 바랍니다. 😄
프로토콜 설계라는 용어를 서버 구조설계로 잘못 사용하고있었네요 ㅠㅠ
IOCP모델도 None-blocking + 비동기 구조로 다시 정리했습니다.
늦은시간 답변 감사합니다 선생님!