인프런 커뮤니티 질문&답변

전우형님의 프로필 이미지
전우형

작성한 질문수

Windows 소켓 프로그래밍 입문에서 고성능 서버까지!

소켓 입/출력 설계 정리

해결된 질문

작성

·

338

·

수정됨

0

안녕하세요. 선생님!

프로토콜 설계관련 큰 흐름을 정리 해보고 있습니다.

 

주요 포인트는 서버에서 관리(TCP로 연결된 소켓)하고있는 클라이언트들의

요청을 어떤 구조로 처리할지?

총 3가지 형태로 정리되었습니다.


1. 블록

강의 : 멀티쓰레드 채팅서버 구조(블록 소켓)

1.png


2. 논블록

강의에는 없지만, 하나의 쓰레드에서 여러 논블록 소켓들 돌며 Receive를 확인하는 구조

2.png


3. 비동기

강의 : IOCP기반 채팅서버(클라이언트 수신처리를 OS에 등록하여 콜백 받는구조)

3.png


궁금한 부분은

다양한 프로토콜 설계를 "큰 주제"로 나눈다면

블록/ 논블록/ 비동기 이렇게 3가지 형태로 나누어도 크게 문제가 없을 지 궁금합니다.

답변 1

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

음...우선 IOCP는 Non-blocking I/O 범주에 포함되어야 합니다. 그리고 구조에 따라 스레드 개수는 달라질 수 있겠습니다. 중요한 것은 이 모든 분류는 입/출력 방식에 관한 것으로 프로토콜과는 관련이 없습니다. 프로토콜은 입/출력 데이터 형식에 직접적으로 관련이 있다 하겠습니다. Blocking, Non-blocking, IOCP는 입/출력 구조에 관한 분류입니다. 참고하시기 바랍니다. 😄

전우형님의 프로필 이미지
전우형
질문자

프로토콜 설계라는 용어를 서버 구조설계로 잘못 사용하고있었네요 ㅠㅠ

IOCP모델도 None-blocking + 비동기 구조로 다시 정리했습니다.

늦은시간 답변 감사합니다 선생님!

전우형님의 프로필 이미지
전우형

작성한 질문수

질문하기