Приложение для передачи файла в C (TCP)
Простое приложение для передачи файлов, созданное с C, используя розетки TCP. Это приложение включает в себя сервер , который прослушивает входящие клиентские подключения и обслуживает файлы, и клиент , который запрашивает файл с сервера и сохраняет его локально.
Требования
Чтобы запустить это приложение, вам понадобится:
- Компилятор Mingw или GCC (для компиляции C код C в Windows).
- Visual Studio Code (необязательно, для редактирования и управления кодом).
- GIT (необязательно, для клонирования этого хранилища и управления версией).
Загрузки
Скачать mingw :
- Перейдите на страницу Sourceforge Mingw.
- Установите Mingw и убедитесь, что
gcc включен в установку. - Добавьте папку Mingw's
bin (например, C:MinGWbin ) в переменную среды вашего пути .
Установите код Visual Studio (необязательно):
- Загрузите и установите с сайта Visual Studio Code.
- Вы можете открыть папку Project в коде VS, чтобы легко управлять и компилировать файлы.
GTK 3 (для графического пользовательского интерфейса).
Проверьте установку GCC
Чтобы убедиться, что GCC установлен правильно, откройте терминал или командную строку и введите:
Вы должны увидеть информацию о версии, если GCC установлен должным образом.
Загрузки
- Скачать mingw :
- Перейдите на страницу Sourceforge Mingw.
- Установите Mingw и убедитесь, что GCC включен в установку.
- Добавьте папку Mingw's Bin (например, C: mingw bin) в переменную среды вашего пути.
- Установите GTK 3 :
- Загрузите GTK 3 для Windows с официального сайта GTK.
- Установите GTK и убедитесь, что требуемые DLL размещены в пути вашей системы или вместе с составленными исполняемыми файлами. В качестве альтернативы, если вы используете MSYS2:
- Откройте терминал MSYS2 и запустите:
pacman -S mingw-w64-x86_64-gtk3
Начиная
- Клонировать это хранилище
- Откройте проект в вашей предпочтительной IDE или текстовом редакторе
- Вы можете использовать код Visual Studio, Code :: Blocks, Dev-C ++, Clion или любой другой текстовый редактор IDE, который поддерживает программирование C.
- Откройте папку Project в выбранном вами редакторе, чтобы легко управлять и редактировать файлы.
Компиляция - без 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 >
- Замените <serer_ip> на IP -адрес сервера (например, 127.0.0.1, если вы работаете локально).
- Замените имя файла, который вы хотите загрузить из каталога сервера.
./client.exe 127.0.0.1 testfile.txt
Клиент подключится к серверу, запрашивает указанный файл и сохраняет его локально с помощью того же имени файла.
Сервер компиляции и клиент - с GTK
- Установите PKG-Config, чтобы найти GTK:
- Если вы используете MSYS2 или другой диспетчер пакетов, такой как VCPKG, убедитесь, что путь PKG-Config настроен должным образом. В MSYS2 вы можете запустить следующую команду:
export PKG_CONFIG_PATH= " /mingw64/lib/pkgconfig "
- Обновите C_CPP_PROPERTIES.JSON в коде Visual Studio: чтобы гарантировать, что код Visual Studio распознает 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 и порт.
- Брандмауэр или антивирус : временно отключить брандмауэр или программное обеспечение анитивируса, если они блокируют соединения.
Примечания
- Убедитесь, что сервер и клиент находятся в одной сети или настраивают настройки маршрутизатора и брандмауэра, чтобы обеспечить связь.
- Это приложение предназначено для основных передачи файлов и в настоящее время поддерживает подключения с одним клиентом.
Будущие улучшения - трекер
- Несколько файловых передач:
- Поддержка передачи нескольких файлов одновременно или в партии. Это может включать отправку массива имен файлов, а затем передавать каждый файл один за другим.
- Передачи каталога:
- Разрешить передавать целые каталоги, которые могут включать рекурсивную отправку всех файлов и папок, а также метаданные.
- Сжатие:
- Чтобы сократить время передачи, вы можете сжимать файлы перед отправкой и распаковать их на приемной стороне.
- Шифрование:
- Реализуйте шифрование (например, SSL/TLS) для безопасной передачи файлов, особенно если вы планируете отправлять конфиденциальные данные.
- Пользовательский интерфейс ✔
- Для приложения с GTK ✔
- для приложения без GTK ✔
- Обработка ошибок и другие проблемы: ✔
- Перезаборт файлов, специальные типы файлов, проверка целостности файлов. ✔
Если вы хотите внести свой вклад, даже если вы используете чат-GPT, пожалуйста, знайте, что вы делаете в первую очередь, потому что вы тратите свое время (оставаясь и просмотрев свой код без завернутого планка) и ваш (попросив GPT написать код и не получить PR). Это настолько очевидно, когда запрашиватель использует ИИ и даже не думает об этой проблеме.
Лицензия
Этот проект открыт и доступен по лицензии MIT.