Skip to content

feat: 네트워크 서버 구현 (TCP/UDP 에코, 파일전송) #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jul 26, 2025

Conversation

raymond1203
Copy link
Contributor

Summary

  • TCP 에코 서버 구현 (단일/멀티 클라이언트 지원)
  • UDP 에코 서버 구현
  • 파일 전송 서버 구현 (업로드 기능)
  • CLI 통합으로 python app.py server 명령어 추가
  • Docker Compose 환경에서 서버 서비스 실행 지원

주요 변경사항

  • 새로운 서버 모듈: tcp_server.py, udp_server.py, file_server.py
  • CLI 확장: 서버 서브명령어 추가
  • Docker Compose: 서버 서비스 컨테이너 추가
  • 문서화: README에 서버 기능 사용법 추가
  • .gitignore 파일 추가로 불필요한 파일 제외

구현 세부사항

TCP 에코 서버

  • 단일 클라이언트 모드와 멀티 클라이언트 모드 지원
  • 스레딩을 이용한 동시 클라이언트 처리
  • 타임스탬프 포함 에코 응답
  • 안전한 연결 종료 처리

UDP 에코 서버

  • 비연결 방식의 메시지 처리
  • 클라이언트별 독립적 응답
  • 타임스탬프 포함 에코 메시지

파일 전송 서버

  • TCP 기반 파일 업로드 기능
  • 안전한 파일명 처리 (경로 조작 방지)
  • 타임스탬프 기반 파일명 중복 방지
  • 파일 크기 검증 및 전송 상태 확인

CLI 통합

  • python app.py server tcp-echo - TCP 에코 서버
  • python app.py server udp-echo - UDP 에코 서버
  • python app.py server file-transfer - 파일 전송 서버
  • 각 서버별 호스트/포트 설정 옵션

Docker Compose 통합

  • 각 서버별 독립적인 컨테이너 서비스
  • 외부 접근을 위한 포트 매핑
  • 볼륨 마운트를 통한 파일 공유

Test plan

  • TCP 에코 서버 단일/멀티 클라이언트 테스트
  • UDP 에코 서버 테스트
  • 파일 전송 서버 테스트
  • Docker Compose 환경에서 서버 실행 확인
  • 기존 클라이언트 도구(ping, scan)와 연동 테스트
  • CLI 명령어 동작 확인

테스트 결과

Docker Compose로 모든 서버를 실행하고 기존 클라이언트 도구로 테스트 완료

  • 포트 스캔: TCP(8080), 파일전송(8082) 서버 탐지 성공
  • Ping 테스트: 서버 간 통신 정상
  • DNS 조회: 외부 도메인 조회 정상

- 단일 클라이언트 TCP 에코 서버 기능
- 멀티 클라이언트 지원을 위한 스레딩 구현
- 호스트/포트 설정 가능
- 타임스탬프 포함 에코 응답
- 안전한 종료 처리
- UDP 기반 에코 서버 기능
- 비연결 방식의 메시지 처리
- 클라이언트별 독립적 응답
- 타임스탬프 포함 에코 메시지
- 설정 가능한 바인딩 주소
- TCP 기반 파일 업로드 서버
- 멀티 클라이언트 동시 처리
- 안전한 파일명 처리 (경로 조작 방지)
- 타임스탬프 기반 파일명 중복 방지
- 파일 크기 검증 및 전송 상태 확인
- 설정 가능한 업로드 디렉토리
- server 서브명령어 추가
- TCP 에코 서버 (tcp-echo) 명령어
- UDP 에코 서버 (udp-echo) 명령어
- 파일 전송 서버 (file-transfer) 명령어
- 각 서버별 설정 옵션 제공
- 멀티 클라이언트 모드 옵션 추가
- TCP 에코 서버 서비스 (포트 8080)
- UDP 에코 서버 서비스 (포트 8081)
- 파일 전송 서버 서비스 (포트 8082)
- 모든 서버 0.0.0.0 바인딩으로 외부 접근 허용
- 파일 전송 서버용 볼륨 마운트 추가
- 기존 클라이언트 도구와 통합 테스트 완료
- Python 캐시 파일 제외
- 로그 파일 제외 (monitor.log)
- uploads 디렉토리 제외
- IDE 및 OS 관련 파일 제외
- 가상환경 디렉토리 제외
- feature/servers 섹션 추가
- 서버 실행 명령어 상세 설명
- TCP/UDP 에코 서버 사용법
- 파일 전송 서버 사용법
- 각 서버별 옵션 및 예시 코드 포함
@raymond1203 raymond1203 merged commit d57d303 into main Jul 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant