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

3anop

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

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

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

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

Тхт файлы рыхлые, имеет ли смысл их cжимать перед отправкой и соответственно разжимать удаленно?
 

saido

Турист
Регистрация
18 Апр 2011
Сообщения
4
Реакции
0
Credits
8
Используй ssh, под дельфи есть компоненты
 

#ib

Местный
Регистрация
10 Май 2005
Сообщения
12
Реакции
3
Credits
22
Можешь попробовать использовать сразу архиватор -- можно и консольный вариант -- так убьешь сразу 2 зайцев -- и сжатие и шифрование. Если же нет -- то можно и шифровать данные -- например с помощью DCPcrypt (хотя проект вроде и умер) или любого другого продукта. По SSL -- мне кажется проще самому шифровать -- можно получить намного более гибкое решение и не привязываться к его реализации в конкретном компоненте -- тем более в том же Инди 9 и 10 они внесли большие изменения в его применение

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

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

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

3anop

Турист
Регистрация
19 Авг 2011
Сообщения
2
Реакции
0
Credits
2
Можешь попробовать использовать сразу архиватор -- можно и консольный вариант -- так убьешь сразу 2 зайцев -- и сжатие и шифрование.
Я вот не знаю как архивировать с паролем в потоке, т.е. чтоб файл начал отправляться еще не дожидаясь окончания архивации и соответственно на той стороне чтоб началась разархивация с получением первых блоков.
Такое вообще возможно?

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

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

Спасибо огромное за подсказки.
 

#ib

Местный
Регистрация
10 Май 2005
Сообщения
12
Реакции
3
Credits
22
Попробывать можно -- только я уже давно работал с архиваторами. Если просто шифровать на лету каждый блок -- то это намного проще

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

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

andrewmrn

Турист
Регистрация
31 Янв 2009
Сообщения
4
Реакции
0
Credits
8
Непонятно зачем такие сложности. Тот же инди - IdHTTP - простая передача. Фвйлом, без блоков и тд. Архивирование отдельно zipforge. Шифрование - любая функция или компонента
 

alexdnepro

Premium
Регистрация
18 Фев 2010
Сообщения
100
Реакции
1
Credits
130
Как по мне можно и через сокеты сделать, шифровать поток при отправке и декодировать при приеме.
 

StrikerLoner

Турист
Регистрация
24 Июл 2009
Сообщения
10
Реакции
0
Credits
20
через инди IdHTTP с шифорованием и включеной опцией по сжатию gzip все что хотели то и получили
 

alchemist131

Турист
Регистрация
16 Ноя 2010
Сообщения
10
Реакции
0
Credits
21
через сокеты все просто - отправка одной API функцией TransmitFile
с приемом придется повозиться
зато можно своими руками реализовать почти любую степень защиты
 

arnold99

Местный
Регистрация
7 Май 2006
Сообщения
28
Реакции
2
Credits
102
RealThinClient где то тут пробегало. Там шифрование точно есть и примеры передачи файлов
 

borisuy

Турист
Регистрация
8 Фев 2012
Сообщения
4
Реакции
0
Credits
8
Можно просто Indy взять для передачи файлов...