Можно ли передать файл через CoAP? - PullRequest
1 голос
/ 01 декабря 2019

В последнее время я работаю над проектом и пытаюсь передать файл json на сервер CoAP. Я вставил несколько случайных значений в ключ: значение пары, такие как:

{
    key1: value1,
    key2: [value21, value22, value23]
}

Вопросы:

  • CoAP очень похож на HTTP. Итак, как HTTP, можно ли передать файл JSON через CoAP с помощью метода POST / PUT? Если это возможно, каково рекомендуемое расположение каталога для помещения загруженного файла на сервер ( ресурс каталог)?

Обновление:

Фактический размер файла составляет около 152,8 КБ.

Ответы [ 2 ]

1 голос
/ 02 декабря 2019

Для первого снимка вы можете попробовать "простой-файл-серверный пример" eclipse / californiaium.

cf-simple-fileserver

Поддерживает чтение(GET) и использует для этого дополнительный блок 2.

Если вы пойдете глубже и выйдете из лаборатории, RFC7959 по блоку может столкнуться с несколькими проблемами.

  1. coap обычно предполагает, что конечные точки идентифицируются по их ip-адресу (и порту). Хотя блочная передача может длиться дольше, это предположение может быть нарушено. Если клиент сталкивается с таким изменением адреса, вариант блока 2 (GET) может работать, но для варианта блока 1 (PUT) это потребует специальной подготовки.

  2. Хотя такая блочная передача имеет тенденцию длиться дольше, она может быть приостановлена ​​из-за временной передачи. Для этого требуется стратегия «возобновления или провала». Также здесь GET намного проще, чем PUT.

  3. Основные проблемы передачи при сбоях. По моему опыту, blockwise поставляется со многими блоками, и так много MID используются за короткий промежуток времени. Если клиент аварийно завершает работу и выбирает случайный MID при запуске, вероятность неожиданного столкновения MID довольно высока. В зависимости от реализации дедупликации серверов coap (строго в соответствии с RFC7252 или продвинутым в курсе), вашему клиенту может потребоваться стратегия, чтобы избежать ситуации, когда сервер повторно передает несвязанные сообщения только на основе MID. Мой опыт того времени был: «Проанализируйте, что у вас получится, если пахнет, подождите 247s :-)». Ваш клиент может также сохранить последний использованный MID для преодоления этого или использовать специальную / отдельную «блочную конечную точку» с отключенной дедупликацией.

  4. IP. FMPOV некоторые видели проблемы, оставленные для реализации и начали заполнять патенты. Это также может потребовать внимания.

Все вместе: если вы используете объемную загрузку для полезной нагрузки иногда некоторых K байтов, мой опыт не так уж плох. Но если вы регулярно переводите больше, coap может быть не правильным выбором.

1 голос
/ 01 декабря 2019

Вы можете передавать произвольные файлы JSON, используя CoAP POST / PUT. То, какой каталог будет доступен для записи, полностью зависит от сервера.

Обратите внимание, что для файла такого размера время передачи будет значительно больше, чем с HTTP, поскольку пакеты отправляются с блокировкой (помещая первые 1 КБ,ответ, следующий 1 КБ - тогда как HTTP имеет окно TCP).

...