Skip to content

gumgu/tcp-chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Tcp-Socket-Server 프로젝트

프로젝트 개요

본 프로젝트는 TCP 소켓을 활용하여 실시간 채팅 및 파일 다운로드 기능을 제공하는 서버를 구현합니다. 네트워크 통신의 원리를 깊이 있게 이해하고, 직접 서버를 구축함으로써 클라이언트와 서버간의 상호작용에 대해 직접 경험합니다.

기술 스택

  • 프로그래밍 언어: Java (JDK 17)

프로젝트 요구사항

  • 서버 설정 및 클라이언트 관리
    • 포트 설정: 7777 포트를 사용하여 서버 소켓을 생성
    • 클라이언트 연결 대기: 서버는 클라이언트의 연결 대기
    • 스레드 생성: 클라이언트가 연결되면, 해당 클라이언트를 위한 별도의 스레드를 생성하여 서비스 제공.
    • 지속적 서비스 제공: 클라이언트가 종료 키워드를 입력할 때까지 서비스를 반복 제공.
  • 실시간 다중 채팅 기능
    • 채팅방 생성: 사용자가 새로운 채팅방을 생성할 수 있다.
    • 메시지 송수신: 채팅방 내에서 사용자 간의 메시지를 실시간으로 송수신할 수 있다.
  • 파일 관리 기능
    • 파일 리스트 제공: 사용자에게 서버에 있는 파일 리스트를 제공한다.
    • 파일 전송 요청 처리: 사용자의 파일 전송 요청을 처리한다.
    • 파일 다운로드: 사용자가 서버에 있는 파일을 다운로드할 수 있다.

버전 별 구현사항

학습 후 오마주한 개념

  • Servlet
  • Apache/Tomcat
  • Spring의 Dispatcher Servlet(전략 패턴)
  • 프로토콜 형식

이후 추가 적용할 기술 내역

  • 병렬처리
    • 쓰레드, 쓰레드
    • Thread-safe
  • 동시성 관리
  • 입출력과 버퍼
  • NIO
  • CGI, 환경 변수.
  • Tomcat, catalina와 coyote
  • 자체 프로토콜

아키텍쳐

클라이언트 클래스 구조도

서버 클래스 구조도

채팅서버_아키텍처_사이즈정렬

주요 고민 사항

학습 내역

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages