@First_Dominus

Как реализовать обмен файлами между устройствами в сети?

Нужно реализовать обмен файлами между устройствами в локальной сети.
Как лучше это сделать? Сделать свою реализацию общения и обмена файлами через сокеты или использовать какой то протокол типа ftp? Что посоветуете? Собираюсь использовать java.
  • Вопрос задан
  • 370 просмотров
Решения вопроса 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Все зависит от конечной задачи и нюансов в ней, вариантов в общем масса:

1) Использовать готовые протоколы типа ftp\scp\ssh\etc и их реализации клиент-сервер. В такой ситуации придется мириться с их проблемами\ограничениями\сложностями.
2) Пойти тупым путем, установить соединение, открыть стрим файла и пихать его в сокет, на другой стороне также открыть стрим и пихать все пришедшее на сокет в него. Тут уже сами себе буратино и можете извращаться и решать проблемы сами.
3) Пойти правильным путем и написать сначало тз для себя в котором точно определитесь что и как необходимо, необходимые меры надежности передачи и все возможные проблемы и методы их решений.
Т.е. образно говоря можно взять принципы передачи пакетов tcp\ip за основу:
1) Перед началом передачи файла передать crc файла клиенту, клиент посмотрел что такого нет и отвечает что ждет приема. Можно расширить и к примеру ответить что файл есть но изменился а значит надо передать только изменные блоки.
2) Сервер получив согласие клиента разбивает файл на чанки(некоторый заданный размер блоков)
3) Сервер отправляет crc клиенту и блок, клиент получает crc и получает блок затем сверяет его с crc и отвечает что все ок, сервер делает также со всеми оставшимеся блоками, если сервер не получил ок от клиента то отправить блок снова. Если расширять то можно сделать новый ответ серверу что такой crc для такого блока есть и давай следующий.
N) дорабатываешь все это до желаемого результата, к примеру добавляешь сжатие блоков, нумеруешь их чтобы не слать последовательно а была возможность асинхронной передачи, добавляешь шифрование и т.д.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы