C (TCP)의 파일 전송 응용 프로그램
TCP 소켓을 사용하여 C로 구축 된 간단한 파일 전송 응용 프로그램. 이 애플리케이션에는 들어오는 클라이언트 연결을 청소하고 파일을 제공하는 서버 와 서버에서 파일을 요청하고 로컬로 저장하는 클라이언트가 포함됩니다.
요구 사항
이 응용 프로그램을 실행하려면 다음이 필요합니다.
- Mingw 또는 GCC 컴파일러 (Windows에서 C 코드를 컴파일하려면).
- Visual Studio Code (코드 편집 및 관리를위한 선택 사항).
- git (옵션,이 저장소 및 버전 제어 클로닝).
다운로드
mingw 다운로드 :
- Mingw의 Sourceforge 페이지로 이동하십시오.
- MINGW를 설치하고
gcc 설치에 포함되어 있는지 확인하십시오. - Mingw의
bin 폴더 (예 : C:MinGWbin )를 경로 환경 변수에 추가하십시오.
Visual Studio Code 설치 (선택 사항) :
- Visual Studio Code 웹 사이트에서 다운로드 및 설치하십시오.
- 파일을 쉽게 관리하고 컴파일하려면 Code에서 프로젝트 폴더를 열 수 있습니다.
GTK 3 (그래픽 사용자 인터페이스 용).
GCC 설치를 확인하십시오
GCC가 올바르게 설치되도록하려면 터미널 또는 명령 프롬프트를 열고 다음을 입력하십시오.
GCC가 올바르게 설치된 경우 버전 정보가 표시됩니다.
다운로드
- mingw 다운로드 :
- Mingw의 Sourceforge 페이지로 이동하십시오.
- MINGW를 설치하고 GCC가 설치에 포함되어 있는지 확인하십시오.
- Mingw의 빈 폴더 (예 : C : Mingw bin)를 경로 환경 변수에 추가하십시오.
- GTK 3 :
- GTK의 공식 웹 사이트에서 Windows 용 GTK 3을 다운로드하십시오.
- GTK를 설치하고 필요한 DLL이 시스템 경로 또는 컴파일 된 실행 파일과 함께 배치되도록하십시오. 또는 MSYS2를 사용하는 경우 :
- MSYS2 터미널을 열고 실행하십시오.
pacman -S mingw-w64-x86_64-gtk3
시작하기
- 이 저장소를 복제하십시오
- 선호하는 IDE 또는 텍스트 편집기에서 프로젝트 열기
- Visual Studio Code, Code :: Blocks, Dev-C ++, Clion 또는 C 프로그래밍을 지원하는 다른 IDE 텍스트 편집기를 사용할 수 있습니다.
- 선택한 편집기에서 프로젝트 폴더를 열어 파일을 쉽게 관리하고 편집하십시오.
편집 - GTK없이
다음과 같이 서버 및 클라이언트 응용 프로그램을 컴파일하십시오.
- 서버를 컴파일하십시오
gcc server.c -o server.exe -lws2_32
- 클라이언트를 컴파일하십시오
gcc client.c -o client.exe -lws2_32
Server.exe 및 Client.exe를 생성합니다.
응용 프로그램 실행 - GTK없이
1 단계 : 서버를 시작합니다
- 프로젝트 디렉토리에서 터미널 또는 명령 프롬프트를 엽니 다.
- 서버 응용 프로그램 실행 :
2 단계 : 클라이언트를 실행하십시오
- 별도의 터미널 또는 다른 기계 에서 프로젝트 디렉토리로 이동하십시오.
- 클라이언트를 실행하고 서버의 IP 주소와 다운로드하려는 파일 이름을 지정합니다.
./client.exe < server_ip > < filename >
- <server_ip>을 서버의 IP 주소로 교체하십시오 (예 : 로컬로 실행중인 경우 127.0.0.1).
- 서버 디렉토리에서 다운로드하려는 파일 이름으로 바꾸십시오.
./client.exe 127.0.0.1 testfile.txt
클라이언트는 서버에 연결하고 지정된 파일을 요청한 후 동일한 파일 이름으로 로컬로 저장합니다.
GTK를 사용하여 서버 및 클라이언트를 컴파일합니다
- GTK를 찾으려면 PKG-Config를 설정하십시오.
- MSYS2 또는 VCPKG와 같은 다른 패키지 관리자를 사용하는 경우 PKG-Config 경로가 제대로 구성되어 있는지 확인하십시오. MSYS2에서는 다음 명령을 실행할 수 있습니다.
export PKG_CONFIG_PATH= " /mingw64/lib/pkgconfig "
- Visual Studio Code의 C_CPP_PROPERTIES.JSON 업데이트 : Visual Studio Code가 GTK 및 기타 라이브러리를 인식하는지 확인하려면 C_CPP_PROPERTIES.JSON 파일을 GTK 및 기타 필요한 라이브러리를 포함하도록 업데이트하십시오.
- Ctrl + Shift + P를 누르고 C/C ++를 검색하십시오 : 구성 (UI).
- 포함 경로 섹션에서 다음과 같은 경로를 추가하십시오.
" C:/msys64/mingw64/include/gtk-3.0 " ,
" C:/msys64/mingw64/include/glib-2.0 " ,
" C:/msys64/mingw64/lib/glib-2.0/include " ,
" C:/msys64/mingw64/include/pango-1.0 " ,
" C:/msys64/mingw64/include/cairo " ,
" C:/msys64/mingw64/include/gdk-pixbuf-2.0 " ,
" C:/msys64/mingw64/include/atk-1.0 " ,
" C:/msys64/mingw64/include/harfbuzz "
- 서버 및 클라이언트를 컴파일 :
gcc server_app.c -o server_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
gcc client_app.c -o client_app.exe ` pkg-config --cflags --libs gtk+-3.0 ` -lws2_32
프로젝트 폴더에서 server_app.exe 및 client_app.exe를 생성합니다.
응용 프로그램 실행 - GTK와 함께
1 단계 : 서버를 시작합니다
- 프로젝트 디렉토리에서 터미널 또는 명령 프롬프트를 엽니 다.
- 서버 응용 프로그램 실행 :
2 단계 : 클라이언트를 실행하십시오
- 별도의 터미널 또는 다른 기계에서 프로젝트 디렉토리로 이동하십시오.
- 클라이언트를 실행하고 서버의 IP 주소와 다운로드하려는 파일 이름을 지정합니다.
문제 해결
- 연결 거부 (10061) : 지정된 IP 및 포트에서 서버가 실행되고 청취되도록합니다.
- 잘못된 IP 및 포트 : 클라이언트와 서버가 올바른 IP와 포트를 사용하고 있는지 확인하십시오.
- 방화벽 또는 안티 바이러스 : 연결을 차단하면 방화벽 또는 anitivirus 소프트웨어를 일시적으로 비활성화합니다.
메모
- 서버와 클라이언트가 동일한 네트워크에 있는지 확인하거나 통신을 허용하도록 라우터 및 방화벽 설정을 조정하십시오.
- 이 응용 프로그램은 기본 파일 전송을 위해 설계되었으며 현재 단일 클라이언트 연결을 지원합니다.
향후 향상 - 추적기
- 여러 파일 전송 :
- 한 번에 여러 파일을 전송하거나 배치로 전송합니다. 여기에는 파일 이름 배열을 보내고 각 파일을 전송하는 것이 포함될 수 있습니다.
- 디렉토리 전송 :
- 메타 데이터와 함께 모든 파일과 폴더를 재귀 적으로 전송하는 것이 포함될 수있는 전체 디렉토리를 전송할 수 있습니다.
- 압축:
- 전송 시간을 줄이려면 파일을 보내기 전에 압축하여 수신 측에서 파일을 압축 할 수 있습니다.
- 암호화 :
- 특히 민감한 데이터를 전송하려는 경우 보안 파일 전송에 대한 암호화 (SSL/TLS와 같은)를 구현하십시오.
- 사용자 인터페이스 ✔
- gtk ✔를 사용한 응용 프로그램의 경우
- gtk ✔가없는 응용 프로그램의 경우
- 오류 처리 및 기타 문제 : ✔
- 파일 덮어 쓰기, 특수 파일 유형, 파일 무결성 검사. ✔
기여를 원한다면 채팅 간편을 사용하더라도 내 시간을 낭비하고 (버그가없는 코드를 유지하고 검토하여) (GPT에 코드를 작성하고 PR을 얻지 않도록 요청함으로써) 둘 다 낭비하기 때문에 먼저 무엇을하고 있는지 알 수 있습니다. 요청자가 AI를 사용하고 문제에 대해 생각조차하지 않을 때는 분명합니다.
특허
이 프로젝트는 오픈 소스이며 MIT 라이센스에 따라 사용할 수 있습니다.