Вы можете использовать любой протокол на порту 80. Использование HTTP - хороший выбор, но вам не нужно его использовать.
Сжатие Какой выбрать? Мы не ограничиваемся gzip или deflate только потому, что они наиболее популярны для HTTP-трафика. Если есть какая-то необычная схема сжатия, которая дает лучшие результаты для нашей задачи - пусть будет так.
Лучшее сжатие зависит от содержимого. Я бы использовал Deflator для простоты, однако BZIP2 может дать лучшие результаты (требуется библиотека)
Для вашего типа файла вы можете обнаружить, что сначала выполняется сжатие, специфичное для этого типа, что может уменьшить размер отправляемых данных.
Разделение Очевидно, что файл необходимо разделить и передать в несколько параллельных сеансов.
Это не очевидно для меня. Параллельная загрузка данных повышает производительность за счет увеличения доступной пропускной способности (т. Е. Вытеснения других пользователей с той же пропускной способностью). Это может быть нежелательным или даже бессмысленным (если других пользователей нет)
Фон Передача огромного файла занимает много времени. Влияет ли это на решение, если оно вообще есть?
Вам понадобится возможность перезапустить загрузку в любой момент.
Безопасность Является ли HTTPS подходом? Или мы должны принять другой подход, учитывая объем данных?
Я уверен, что это нормально, независимо от объема данных.
в готовом виде Я полностью готов написать его сам (должно быть весело), но я не могу избежать вопроса, есть ли готовые решения, удовлетворяющие моим требованиям.
Я бы попробовал использовать существующие веб-серверы, чтобы проверить, подходят ли они к работе. Я был бы удивлен, если бы не было бесплатного веб-сервера, который бы делал все вышеперечисленное.
Вот выборка http://www.java -sources.net / open-source / веб-серверы