|
|
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
Есть Java applet, получающий и передающий файлы на сервер с помощью Код: java 1. . Для загрузки/выгрузки больших файлов думаю делить их на части, для этого есть велосипедный протокол: Апплет вызывает initDownload(fileName,chunkSize) и сервер устанавливает размер блока и возвращает количество частей, на которые поделится файл при заданном размере одной части; getFilePart(fileName,chunkNumber) - по названию все ясно. На сервере реализуется с помощью RandomAccessFile setFilePart(fileName,chunkNumber) - ту все ясно по названию. Потребитель АПИ по загрузке/выгрузке - мой апплет на Java, а предоставляющее АПИ приложение не мое, но так как мой апплет потребляет АПИ, я могу установить спецификации/рекомендации. При этом сервер может быть на PHP, C#, Java, веь сервер соответсвенно XAMPP, IIS, Tomcat, JBOSS ну и какие еще там есть для вышесказанных языков. Я слашал про Код: java 1. , я правильно понимаю, что просто ставлю на апплете такое и все работает. А как же АПИ-сторона? Откуда они узнают размер мои частей? Я должен в каждом реквест маппинге ставить типа Response.setChunked(true), здавать такой же размер как и в Код: java 1. или можно в веб сервере что-то натсроить и все? Я что-то читал, что при chunked передаче обеим сторонам не обхательно знать размер каждого чанка, так как там просто идет размер-байты и последний чанк с нулевым размером, так ли это? В идеале, хотелось бы на стороне своего апплета прописать пару строчек, а на стороне сервера если настройка чанк-сайза не фиксированная, прописать в натсрофках сервера - просто рекомендовав клиентам там то и там то кое что прописать, прогуглив основные популярные сервера. А если настройка чанк сайза фиксированная, что противоречит вышесказнному предлодению о последнем 0-чанке, тогда надо настраивать режим чанкинга на каом входящем реквесте, на соотвествующем маппинге - не хотелось бы жестко задавать этот размер для всех маппингов. ТОгда другой вопрос - можно ли на таких яхыках как РНР и Шарп двумя строчками включить чанкинг как на Джава? Также, если чанкинг олучится настроить минимальными усилиями, я правильно понимаю, что просто при загрузке/выгрузке пишу в инпут/аутпут стрим, закрываю его, а под капотом, протокол сам заботится о разбиении на кусочки и так далее? Так же, как протокол заботится о хэндшейках при установлении соединения Короче говоря, я что-то прочитал и понял,что есть шанс не реализовывать велосипед, но в голове каша, где что настраивать, для какого языка/сервера как именно делать. Буду рад любым разъяснениям, полезным ссылкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2015, 08:36 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
Что за мания такая - спрашивать на форуме то, что расписано в спецификации ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2015, 17:38 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
Спасибо за ссылку. таком образом, HTTP 1.1 из коробки решает мою проблему. Небольшое уточнение - когда апплет отправляет, мне достаточно header прописать для работы в таком режиме и все? На приемнике - какой код обработки чанков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 08:31 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
Я имею виду, стандартный код бех библиотек, твс какая-то сложная обработка или можно в несколько строк уложиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 08:47 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
"Да ёрш же вашу медь ..." - берёте и пробуете . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 15:25 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, то что на отправителе такой сеттер - это понятно, это я еще в первом посте писал. Приемник не так прост - я гуглил recieve chunked request java и получал только рекомендации апач коммонс или еще что-то в этом роде. А у меня апплет, не хотел нагружать его библиотеками, он же потом на клиента качается. Хотел приемник стд средствами написать. Но там еще и не каждый веб сервер поддерживает HTTP 1.1, так что решил бить файл на части, апплетом запрашивать номер части, на сервере отдавать нужный кусок файла по номеру с помощью РандомАксесФайл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 15:36 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
С апплетами опозданьице вышло... лет на 10. Вот жеж преподы... Чё они новости не читают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 16:49 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
mayton, а что предлагаете, Web Start? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 17:45 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
Делай классическое приложение. По крайней мере не будет вопросов с безопасностью. Отладишь. Взлетит - потом перенесёшь логику в апплет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 17:48 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
BaurzhanSПриемник не так прост - я гуглил recieve chunked request java и получал только рекомендации апач коммонс или еще что-то в этом роде. А у меня апплет... который приёмником быть не может. А на будущее запомните, что form-upload это для браузеров. Если вы делаете специализированного клиента, то хоть PUT. И уж всяко - POST. С content-type=application/octet-stream.Но там еще и не каждый веб сервер поддерживает HTTP 1.1, так что решил бить файл на части, апплетом запрашивать номер части, на сервере отдавать нужный кусок файла по номеру с помощью РандомАксесФайл."ахренеть" Во-первых - задлянафига вам вообще диапазоны, если в вашем распоряжении есть InputStream данные из которого "переливаются" в файл тривиальным циклом? Во-вторых, с ваших слов я понял, что веб-приложение делают те, кто сделают так, как вы скажете. Можно навернуть несложную схему кодирования диапазонов для POST и это вообще никак не будет зависеть от версии протокола. Но, опять-таки - задлянафига, если всё это может понадобиться только в том фатальном случае, когда из-за сетевых проблем оборвалась передача данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 17:54 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
И апплет и сервер является и отправителями и приемниками - сперва сервер шлет файл (может большим быть), потом апплет что-то там делает с файлом и высылает обратно. Если файл большой, а загрузка пофейлилась апплет может попробовать повотрить загрузку - поэтому лучше часть, а не весь файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 06:28 |
|
||
|
Как сделать блочную передачу на сервере и клиенте стандатными средствами протокола/языка?
|
|||
|---|---|---|---|
|
#18+
(медленно и печально). В http-протоколе соединение инициирует клиент. И это никак не связано с направлением преобладающего объёма передачи данных: 1. GET - от сервера к клиенту; 2. PUT - от клиента к серверу; 3. POST - вообще произвольные соотношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2015, 17:40 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=138&tid=2125737]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 371ms |

| 0 / 0 |
