Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125

Передача zip архивов по сети

17.04.2018, 15:54. Показов 1717. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, получил задание организовать приложение, которое организует бэкап заданных файлов (директорий). Добавляет их в архив и отсылает их на сервер. Приложение должно работать на Линукс системах. В с++ не силен и решил поинтересоваться с чего начать. Можете подсказать в какую сторону двигаться, что гуглить и лучше использовать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.04.2018, 15:54
Ответы с готовыми решениями:

Создание zip-архивов
Добрый вечер. Нужна помощь. Вопрос простой: Как работать с .zip-архивами без внешних приложений. Использовать желательно какую-нибудь...

сборка nginx из zip архивов
Здравствуйте, я хочу установить у себя nginx + php + mysql Причем, для лучшего понимания я поставил себе задачу собрать это не используя...

Архивирование и разархивирование ZIP архивов
Здравствуйте! Долго уже ищу, но не могу найти подходящего. Пробовал zLib - ничего не понял даже по примерам. В LZMA вообще...

9
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
19.04.2018, 15:43
Подумать, как сервер будет принимать файлы. Post-запросом? По ssh? Сетевая шара?
0
Заблокирован
20.04.2018, 18:55
Цитата Сообщение от rayzor48 Посмотреть сообщение
В с++ не силен
А почему тут надо использовать именно C++? Может на shell или python будет удобнее?

Добавлено через 4 минуты
Может rsync попробовать?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
20.04.2018, 19:03
Для windows аналог rsync - robocopy.

Но ТС говорит, что надо сначала заархивировать файлы. И про сервер не ответил.
0
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125
20.04.2018, 21:56  [ТС]
Вот просто нихрена не понял, слишком туп видать(

Добавлено через 4 минуты
Потому что задание написать на С/С++
Так вышло что С изучали только полгода, а далее пошла java.
Щас смотрю видосики читаю вводные статейки чтобы вспомнить синтаксис и более менее врубиться в это дело.
Поскольку решил узнать у болеее шарящих господ в какую сторону копать.
Я понял что передавать лучше ввсего будет по TCP протоколу, передать фотку - без проблем(статьи есть, как считать ее представление есть), текстовый документ тоже. А вот как считать и передать архив чет не въезжаю.

Добавлено через 2 минуты
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Для windows аналог rsync - robocopy.

Но ТС говорит, что надо сначала заархивировать файлы. И про сервер не ответил.
Это надо сделать на линуксе(
Кстати это еще один подводный камень. Ибо для винды я более менее представляю что как, а для линукса - нет
0
Заблокирован
20.04.2018, 23:12
Цитата Сообщение от rayzor48 Посмотреть сообщение
А вот как считать и передать архив чет не въезжаю.
А в чем отличие архива от фотографии и текстового документа - все это просто файлы.
0
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125
21.04.2018, 00:44  [ТС]
Цитата Сообщение от student8102 Посмотреть сообщение
А в чем отличие архива от фотографии и текстового документа - все это просто файлы.
В темах по передаче изображений у людей возникали проблемы с декодированием. Собственно говоря это для меня и есть самое страшное. Как считать файл я еще более менее могу представить, но как потом его обратно собрать - хз. Плюс сомнений вносит то что архив это сборник файлов
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
21.04.2018, 07:03
Стало более-менее ясно что нужно делать. Разбей код на модули:

1) сокеты (скорей всего) и клиент/сервер. Сервер тоже надо написать? Научись передавать любые файлы от клиента к серверу. Для вдохновения могу посоветовать повоторить часть протокола FTP (там используется два канала, один для данных, другой - для текстовых команд). Но можно лить файл просто сплошным потоком, а потом закрывать сокет. Тестироваь приём файла лучше на картинках - сразу видно, что файл скачался не до конца или нет середины.

2) обход заданной директории и создание zip архива.
0
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125
21.04.2018, 11:32  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Стало более-менее ясно что нужно делать. Разбей код на модули:

1) сокеты (скорей всего) и клиент/сервер. Сервер тоже надо написать? Научись передавать любые файлы от клиента к серверу. Для вдохновения могу посоветовать повоторить часть протокола FTP (там используется два канала, один для данных, другой - для текстовых команд). Но можно лить файл просто сплошным потоком, а потом закрывать сокет. Тестироваь приём файла лучше на картинках - сразу видно, что файл скачался не до конца или нет середины.

2) обход заданной директории и создание zip архива.
Да, сервер тоже надо писать. По заданию мне нужно взять файлы из заданной директории или конкретный файл, затем завернуть их в архив и переместить их на сервер(то есть осуществить бэкап), уже на сервере создать папку(название папки - дата и время отправки).
Вы предлагаете сначала передать все файлы, а затем завернуть их в архив. То есть уже после передачи файлов на сервер?
Если да, то этот вариант не совсем подходит
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
21.04.2018, 11:55
Так поменяй вызов моделей местами Сначала делаешь архив, потом отправляешь файлы через сокет.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//сервер
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
 
#define null NULL
 
int main() {
    int listener = socket(AF_INET, SOCK_STREAM, 0);
    if(listener < 0){
        exit(1);
    }
 
    struct sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(5555);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if(bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0){
        exit(2);
    }
 
    listen(listener, 1);
 
    int sock;
    char buf[1024];
    int bytes_read;
    while(1) {
        sock = accept(listener, null, null);
        if(sock < 0) {
            exit(3);
        }
 
        while(1) {
            bytes_read = recv(sock, buf, 1024, 0);
            if(bytes_read <= 0) {
                break;
            }
            printf("%s", buf);
            //send(sock, buf, bytes_read, 0);
        }
        //close(sock);
    }
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//клиент
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
 
int main() {
    int sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock < 0) {
        exit(1);
    }
 
    struct sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(5555);
    addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
    if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
        exit(2);
    }
    char message[] = "Hello there!\n";
    send(sock, message, sizeof(message), 0);
    //close(sock);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.04.2018, 11:55
Помогаю со студенческими работами здесь

Архивирование/разархивирование RAR и ZIP архивов.
Подскажите, как можно из своей програмы на VB архивировать/разархивировать (rar, zip) файлы?

Распаковывание RAR архивов 7 zip в VBA
Здравствуйте, уважаемые форумчане. Как распаковать RAR архив при помощи 7 zip в VBA? Другого разархиватора на рабочих ПК нет, могу...

Архивирование/разархивирование RAR и ZIP архивов.
Подскажите, как можно из своей програмы на VB архивировать/разархивировать (rar, zip) файлы?

Рекурсивное открытие запароленых zip архивов
есть задача: в одной папке лежит файл 2.txt и 2.zip, в 2.zip лежат файлы 3.txt и 3.zip и тд., чтобы открыть 3.txt или 3.zip надо ввести...

Программы для открытия архивов zip и rar
Сама не знаю как получилось, но я сумела поменять программы по умолчанию, для открытия архивов типа rar, на какие-то совсем не известные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru