Skip to content

KyooHyun/Python-File-Transfer-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Python-File-Transfer-System

  • 프로젝트 동기 웹소켓을 사용해서 파일 전송 서버를 만들었는데, 이 과정에서 네트워크를 공부하는 계기가 되었다. 어떻게 파일을 주고받는지 궁금했던 나는 네트워크 수업시간에 소켓프로그래밍에 대해 알게 되었다. 당시에 막연하게 파일 전송 프로그램을 개발했는데, 이 과정에서 막연하게 전송하는 것이 아닌, 서버프로그램을 둬서 서버가 파일을 관리하면 어떨까 하는 생각을 하게 되었다. 따라서 클라이언트는 UI를 WinForms를 기반으로 GUI 기반 클라이언트와 파이썬으로 서버프로그램을 구현하였다. 다른언어 2가지로 따로 구현한 이유는 당시에, 내가 아는 GUI를 가장 쉽게 구현하는 방법이 WinForms를 활용하는 방법이었고, 서버를 리눅스에서 띄울 생각이었으므로, 파이썬으로 구현하는 것이 알맞다고 생각했다. 여러 라이브러리가 있어서 구현이 쉬워지는 것 또한 고려하였다. 요약하자면 다음과 같다.

C# WinForms로 GUI 기반 클라이언트 & 서버 관리 프로그램을 제작

Python Socket 서버로 다중 클라이언트 연결, 파일 송수신, 로그 기록, 디스크 공간 관리 기능 구현

  • 주요 기능 C# WinForms (GUI)

IP / Port 입력 및 검증

서버 실행 및 연결 로그 관리

파일 선택, 추가/삭제, 전송 기능

다운로드 경로 지정 및 변경 가능

파일 전송 진행 상황 로그 출력

Python Socket Server

다중 클라이언트 연결 처리 (멀티스레딩)

파일 전송 요청 시 저장 공간 확인 후 허용/거부

파일 송수신 및 저장 경로 관리

파일 목록 조회 / 삭제 / 이름 변경 지원

서버 로그 기록 (logging 라이브러리 활용)

디스크 사용량 확인 기능

  • 사용 기술

C# (WinForms): 클라이언트 UI, 서버 관리 툴

Python (socket, threading, struct, logging, tqdm 등): 파일 전송 서버

네트워크 프로그래밍: TCP/IP 기반 통신 구현

JSON: 서버 설정(포트, 저장경로 등) 저장 및 불러오기

  • 배운 점

소켓 프로그래밍의 기초와 TCP/IP 동작 원리 이해

서버/클라이언트 구조 설계 및 멀티스레딩 구현 경험

GUI 클라이언트와 백엔드 서버를 연동하는 전체 시스템 설계 역량 강화

디스크 관리, 로그 처리 등 실무적인 서버 관리 기능 학습

  • 앞으로의 발전 방향

전송 시 데이터 암호화를 적용

IOCP를 이용해서 파일 간의 전송을 최적화 밑 네트워크 속도 강화.

About

I've made a filetransfer server with python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages