ServerSocket과 Socket

연결 수락과 연결별 데이터 교환은 서로 다른 객체의 책임이다.

ServerSocket

포트에 bind하고 accept를 기다린다.

서버 전체 수명

Accepted Socket

한 원격 클라이언트와 연결된다.

세션 수명

Client Socket

대상 IP와 포트로 connect한다.

요청 수명

Stream pair

연결의 양방향 바이트를 제공한다.

프로토콜 수명
구분listener close는 이미 수락한 세션 Socket을 자동 종료하지 않는다.

핵심: accept와 session read가 둘 다 블로킹이므로 실행 역할을 분리한다.