是否可以通过CoAP传输文件?

时间:2019-12-01 13:01:42

标签: http coap

最近,我正在做一个项目,我正在尝试将json文件传输到CoAP服务器。我在 key:value 对中放入了一些随机值,例如:

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

问题:

  • CoAP与HTTP非常相似。因此,就像HTTP一样,是否可以使用POST / PUT方法通过CoAP传输json文件?如果可以,建议将上传的文件放入服务器的建议目录位置(资源目录)?

更新

实际文件大小约为152.8 kB。

2 个答案:

答案 0 :(得分:1)

您可以使用CoAP POST / PUT传输任意的JSON文件。可写哪个目录完全取决于服务器。

请注意,对于该大小的文件,传输时间将比HTTP更长,因为程序包是按锁定步骤发送的(发送第一个1kB,响应,然后发送下一个1kB,而HTTP具有TCP窗口)。 / p>

答案 1 :(得分:1)

对于第一张照片,您可以尝试使用eclipse / californium的“简单文件服务器示例”。

cf-simple-fileserver

该程序支持读取(GET)并为此使用选项块2。

如果您深入研究并离开实验室,RFC7959 blockwise可能会遇到几个问题。

  1. coap通常假定端点由其ip地址标识(并且 港口)。尽管逐块传输可能会持续更长的时间,但这一假设可能会被打破。如果客户端面临这样的地址更改,则阻止选项2(GET)可能会起作用,但对于阻止选项1(PUT),则需要进行特殊准备。

  2. 尽管这样的逐块传输趋向于持续更长的时间,但由于临时的传输问题,它可能会暂停。这需要“恢复或失败”策略。同样,这里的GET比PUT容易得多。

  3. 崩溃时的基本传输问题。以我的经验,blockwise包含许多块,因此在短时间内使用了许多MID。如果客户端崩溃并在启动时选择了一个随机MID,则无意识的MID冲突的可能性会很高。根据coap服务器重复数据删除的实现方式(严格按照RFC7252或对此有所了解),您的客户端可能需要一种策略来逃避这种情况,即服务器仅基于MID重新传输不相关的消息。从那时起,我的经验是,“分析得到的气味,如果闻到了,等一下247s :-)”。您的客户还可以保存上次使用的MID来解决该问题,或使用特殊的/单独的“逐块终结点”并禁用重复数据删除。

  4. IP。 FMPOV有些人看到了实施过程中剩下的问题,并开始申请专利。这可能也需要引起注意。

一起:如果对某些时空使用K字节的有效负载使用bockwise,我的经验还不错。但是,如果您定期转移更多资金,那么选择coap可能不是正确的选择。