Наши преимущества

Передача файлов по сети

3anop

Турист
Credits
0
Хочу написать минимальный клиент/сервер для передачи файлов в обеих направлениях. Программа будет запущена на двух десктопах и через диалог выбрав файл и нажав кнопку на одном на другом сразу же должен открыться диалог сохранения файла. И наоборот. Файлы как мелкие тхт так и крупные архивы. Канал передачи должен быть защищенным.

Прошу знающих просверить в некоторых моментах.

Для выше описанной задачи какая мода предпочтительна synchronous или asynchronous?

Не имея опыта я не могу найти решение которое было бы оптимальным как со стороны производительности/скорости так и со стороны защищенности да и еще и несложно в реализации (только начал изучать Delphi, стоит D7).
Я вижу два варианта:
1. криптовать файл локально затем передав по обычному каналу розкриптовывать удаленно
2. использовать защищенный канал передачи
Если использовать второй вариант то на каком из вариантов остовиться SSLSocket, HTTPS, FTPS или SSH?

Тхт файлы рыхлые, имеет ли смысл их cжимать перед отправкой и соответственно разжимать удаленно?
 
Можешь попробовать использовать сразу архиватор -- можно и консольный вариант -- так убьешь сразу 2 зайцев -- и сжатие и шифрование. Если же нет -- то можно и шифровать данные -- например с помощью DCPcrypt (хотя проект вроде и умер) или любого другого продукта. По SSL -- мне кажется проще самому шифровать -- можно получить намного более гибкое решение и не привязываться к его реализации в конкретном компоненте -- тем более в том же Инди 9 и 10 они внесли большие изменения в его применение

По синхронному, асинхронному - принципиальной разницы нет, если только не надо организовывать очередь передачи файлов.

А так решений и компонентов множество -- от сокетов до FTP и от Инди до ICS.

---
До этого не сильно работал с сетевыми протоколами -- но как раз сейчас вынужден реализовать отправку данных в реал-тайме -- так что может что и подскажу. Литературы по этому вопросу мало -- хотя можешь почитать для начала Глубины Indy (Перевод: А.П. Подгорецкий) -- в Инете она есть
 
Можешь попробовать использовать сразу архиватор -- можно и консольный вариант -- так убьешь сразу 2 зайцев -- и сжатие и шифрование.
Я вот не знаю как архивировать с паролем в потоке, т.е. чтоб файл начал отправляться еще не дожидаясь окончания архивации и соответственно на той стороне чтоб началась разархивация с получением первых блоков.
Такое вообще возможно?

По SSL -- мне кажется проще самому шифровать -- можно получить намного более гибкое решение...
SSL врядли буду использовать, скорее всего SSH.

По синхронному, асинхронному - принципиальной разницы нет, если только не надо организовывать очередь передачи файлов.
Буду пытаться реализовать передачу не только групп файлов но и папки. Какой вид выбрать в таком случае?

Спасибо огромное за подсказки.
 
Попробывать можно -- только я уже давно работал с архиваторами. Если просто шифровать на лету каждый блок -- то это намного проще

По шифрованию папок -- или все ручками прописывать -- или не заморачиваться и взять готовые компоненты которые позволяют шифровать на лету -- вот только сомневаючь что они будут отдавать поток до окончания шифрования.

----
Не заходил довольно долго на форум -- глянь личку я сброшу тебе контактную информацию -- если есть вопросы -- стучи
 
Непонятно зачем такие сложности. Тот же инди - IdHTTP - простая передача. Фвйлом, без блоков и тд. Архивирование отдельно zipforge. Шифрование - любая функция или компонента
 
Как по мне можно и через сокеты сделать, шифровать поток при отправке и декодировать при приеме.
 
через инди IdHTTP с шифорованием и включеной опцией по сжатию gzip все что хотели то и получили
 
через сокеты все просто - отправка одной API функцией TransmitFile
с приемом придется повозиться
зато можно своими руками реализовать почти любую степень защиты
 
RealThinClient где то тут пробегало. Там шифрование точно есть и примеры передачи файлов
 
Верх