powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
12 сообщений из 12, страница 1 из 1
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38892022
BaurzhanS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть Java applet, получающий и передающий файлы на сервер с помощью
Код: java
1.
HTTPURLConnection

. Для загрузки/выгрузки больших файлов думаю делить их на части, для этого есть велосипедный протокол:


Апплет вызывает initDownload(fileName,chunkSize) и сервер устанавливает размер блока и возвращает количество частей, на которые поделится файл при заданном размере одной части;
getFilePart(fileName,chunkNumber) - по названию все ясно. На сервере реализуется с помощью RandomAccessFile
setFilePart(fileName,chunkNumber) - ту все ясно по названию.

Потребитель АПИ по загрузке/выгрузке - мой апплет на Java, а предоставляющее АПИ приложение не мое, но так как мой апплет потребляет АПИ, я могу установить спецификации/рекомендации. При этом сервер может быть на PHP, C#, Java, веь сервер соответсвенно XAMPP, IIS, Tomcat, JBOSS ну и какие еще там есть для вышесказанных языков.

Я слашал про
Код: java
1.
setRequestHeader("Transfer-Encoding","chunked"); and setChunkedStreamingMode(chunkSize) у HTTPURLConnection

, я правильно понимаю, что просто ставлю на апплете такое и все работает. А как же АПИ-сторона? Откуда они узнают размер мои частей? Я должен в каждом реквест маппинге ставить типа Response.setChunked(true), здавать такой же размер как и в
Код: java
1.
setChunkedStreamingMode(chunkSize) 

или можно в веб сервере что-то натсроить и все?

Я что-то читал, что при chunked передаче обеим сторонам не обхательно знать размер каждого чанка, так как там просто идет размер-байты и последний чанк с нулевым размером, так ли это? В идеале, хотелось бы на стороне своего апплета прописать пару строчек, а на стороне сервера если настройка чанк-сайза не фиксированная, прописать в натсрофках сервера - просто рекомендовав клиентам там то и там то кое что прописать, прогуглив основные популярные сервера. А если настройка чанк сайза фиксированная, что противоречит вышесказнному предлодению о последнем 0-чанке, тогда надо настраивать режим чанкинга на каом входящем реквесте, на соотвествующем маппинге - не хотелось бы жестко задавать этот размер для всех маппингов. ТОгда другой вопрос - можно ли на таких яхыках как РНР и Шарп двумя строчками включить чанкинг как на Джава?

Также, если чанкинг олучится настроить минимальными усилиями, я правильно понимаю, что просто при загрузке/выгрузке пишу в инпут/аутпут стрим, закрываю его, а под капотом, протокол сам заботится о разбиении на кусочки и так далее? Так же, как протокол заботится о хэндшейках при установлении соединения

Короче говоря, я что-то прочитал и понял,что есть шанс не реализовывать велосипед, но в голове каша, где что настраивать, для какого языка/сервера как именно делать. Буду рад любым разъяснениям, полезным ссылкам.
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38892687
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за мания такая - спрашивать на форуме то, что расписано в спецификации ?
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38893099
BaurzhanS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ссылку. таком образом, HTTP 1.1 из коробки решает мою проблему. Небольшое уточнение -

когда апплет отправляет, мне достаточно header прописать для работы в таком режиме и все? На приемнике - какой код обработки чанков?
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38893105
BaurzhanS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имею виду, стандартный код бех библиотек, твс какая-то сложная обработка или можно в несколько строк уложиться?
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38893662
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Да ёрш же вашу медь ..." - берёте и пробуете .
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38893679
BaurzhanS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, то что на отправителе такой сеттер - это понятно, это я еще в первом посте писал. Приемник не так прост - я гуглил recieve chunked request java и получал только рекомендации апач коммонс или еще что-то в этом роде. А у меня апплет, не хотел нагружать его библиотеками, он же потом на клиента качается. Хотел приемник стд средствами написать. Но там еще и не каждый веб сервер поддерживает HTTP 1.1, так что решил бить файл на части, апплетом запрашивать номер части, на сервере отдавать нужный кусок файла по номеру с помощью РандомАксесФайл.
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38893828
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С апплетами опозданьице вышло... лет на 10. Вот жеж преподы... Чё они новости не читают.
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38893931
BaurzhanS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, а что предлагаете, Web Start?
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38893936
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай классическое приложение. По крайней мере не будет вопросов с безопасностью.

Отладишь. Взлетит - потом перенесёшь логику в апплет.
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38893951
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BaurzhanSПриемник не так прост - я гуглил recieve chunked request java и получал только рекомендации апач коммонс или еще что-то в этом роде. А у меня апплет... который приёмником быть не может.
А на будущее запомните, что form-upload это для браузеров. Если вы делаете специализированного клиента, то хоть PUT. И уж всяко - POST. С content-type=application/octet-stream.Но там еще и не каждый веб сервер поддерживает HTTP 1.1, так что решил бить файл на части, апплетом запрашивать номер части, на сервере отдавать нужный кусок файла по номеру с помощью РандомАксесФайл."ахренеть"
Во-первых - задлянафига вам вообще диапазоны, если в вашем распоряжении есть InputStream данные из которого "переливаются" в файл тривиальным циклом?
Во-вторых, с ваших слов я понял, что веб-приложение делают те, кто сделают так, как вы скажете. Можно навернуть несложную схему кодирования диапазонов для POST и это вообще никак не будет зависеть от версии протокола.
Но, опять-таки - задлянафига, если всё это может понадобиться только в том фатальном случае, когда из-за сетевых проблем оборвалась передача данных?
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38894179
BaurzhanS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И апплет и сервер является и отправителями и приемниками - сперва сервер шлет файл (может большим быть), потом апплет что-то там делает с файлом и высылает обратно. Если файл большой, а загрузка пофейлилась апплет может попробовать повотрить загрузку - поэтому лучше часть, а не весь файл.
...
Рейтинг: 0 / 0
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
    #38894917
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(медленно и печально). В http-протоколе соединение инициирует клиент. И это никак не связано с направлением преобладающего объёма передачи данных:
1. GET - от сервера к клиенту;
2. PUT - от клиента к серверу;
3. POST - вообще произвольные соотношения.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]