클라이언트 종료 사건마다 먼저 닫을 경계와 사용자 결과가 다르다
System.in처럼 닫을 수 없는 전역 입력은 별도 adapter와 종료 token이 필요합니다.
| 사건 | 먼저 수행 | 사용자 결과 |
|---|---|---|
| /exit | 프레임 전송 | 정상 퇴장 |
| server EOF | writer 중단 | 서버 종료 |
| read 오류 | socket close | 연결 끊김 |
| input 종료 | exit 시도 | 로컬 종료 |
| process stop | close once | 취소 |
핵심: 모든 경로는 Socket close와 두 역할 회수로 수렴합니다.