RFP
1. 배경 (Background)
동아리/수업에서 사용할 경량 텍스트 채팅 도구가 필요합니다.
설치가 쉬워야 하고(자바 표준 라이브러리만), 같은 네트워크에서 여러 사용자가 동시에 대화할 수 있어야 합니다.
2. 목표 (Goals)
- TCP 소켓을 이용해 서버 1대 · 다수 클라이언트 구조 구현
- 닉네임을 사용한 대화, 입장/퇴장 안내 메시지
- 서버/클라이언트의 정상 종료 처리
- 기본 예외 처리(연결 끊김, 잘못된 입력 처리)
3. 범위 (Scope)
3.1 필수 기능 (Must)
- 서버 시작/종료
- 지정 포트로 listen (기본 5000)
- Ctrl+C, 예외 발생 시 소켓·스레드 정리 후 종료
- 멀티 클라이언트 처리
- 각 클라이언트를 스레드(또는 스레드풀)로 처리
- 브로드캐스트: 한 사용자의 메시지를 모든 사용자에게 전달
- 닉네임 등록
- 접속 후 첫 메시지:
NICK <이름>
- 공백/중복 닉네임 거절(에러 안내 후 연결 종료 가능)
- 입장/퇴장 알림
- 예:
Yumi joined / SinSaegae left
- 기본 명령
/quit : 클라이언트 종료
/who : 현재 접속자 목록 출력
- 문자 인코딩 UTF-8
4. 비기능 요구사항 (NFR)