Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

AI를 활용한 채팅 프로그램

멀티스레드 소켓 서버(multi_server.cc)와 터미널 클라이언트(chat_client.cc)로 구성된 채팅 프로그램입니다. 제공된 multi_server.cc를 기반으로, 클라이언트 기능에 맞춰 서버를 확장했습니다.

빌드

g++ -o multi_server multi_server.cc -lpthread
g++ -o chat_client  chat_client.cc  -lpthread

실행

./multi_server 9000                 # 서버 (포트 지정)
./chat_client 127.0.0.1 9000        # 클라이언트 (여러 개 접속 가능)

접속 후 /help 로 전체 명령어를 볼 수 있습니다.

기능

기본: 서버 연결 / 송수신 / 종료

확장

  • 닉네임(중복 방지), 입장·퇴장 알림, 접속 시간
  • 채널/방: /join /rooms, 방별 격리, 프롬프트에 현재 방 표시
  • 방 권한: 생성자=방장, /delete /grant /revoke /owner
  • 메시지 히스토리(스크롤백): 방 입장 시 최근 대화 재생
  • 답글 /reply(각 메시지 #번호), 귓속말 /w
  • 텍스트 색상 /color, 이모티콘(:코드+Tab), 메시지 시간 태그
  • 방 파일 저장소: /file 업로드 → /files 목록 → /get 다운로드 (청크 + 진행률)
  • 로컬 파일 탐색: /ls /cd /pwd
  • Tab 자동완성: 명령어 / 방이름 / 닉네임 / 답글·파일 번호 / 색상 / 파일경로 / 이모티콘

설계 메모

  • 프로토콜: TYPE\x1f필드… 라인 기반 텍스트 프로토콜. TCP 스트림 재조립 버퍼로 부분 수신 처리.
  • 멀티스레드 유지: 접속 1건당 pthread 1개 구조를 유지하고, 공유 상태는 pthread_mutex로 보호(원본의 경쟁 상태 개선).
  • 클라이언트: termios raw 모드로 키 단위 입력을 받아 Tab 자동완성·한글(UTF-8) 안전 처리·입력줄 복원을 구현.

자세한 설계 의도는 각 소스 상단과 함수 주석에 정리되어 있습니다.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages