首页 > 解决方案 > 当有效载荷长度大小大于 1000K 时,无法获得有效载荷响应。(Coap)

问题描述

我正在使用 Coapthon 和 Helperclient 库来获取、放置、发布数据。我正在使用下面提到的代码行来获取有效负载。如果 pauload 长度大小不超过 1000,它可以正常工作。

response = self.client.get(path_check, timeout=30)
Jun 21, 2020 5:56:11 PM com.coap.dtls.test.ExampleDTLSClient$1 receiveData
INFO: received response, length53, hex payload:

但在某些情况下,有效载荷大小很高“length1386”,并且无法获取有效载荷:

Jun 21, 2020 5:56:21 PM com.coap.dtls.test.ExampleDTLSClient$1 receiveData
INFO: received response, length1386, hex payload:

并显示下面提到的错误: AttributeError: 'NoneType' object has no attribute 'payload'

任何人都可以帮助他如何获得高长度的有效载荷?我正在使用 python 脚本和 copathon 库来实现它。

response = self.client.get(path_check, timeout=30)

标签: python-3.xiotcoap

解决方案


CoAP 的消息大小仅限于单个 UDP 数据包。

通常,当超过最大大小时,服务器和客户端会退回到所谓的块传输。这允许传输几乎任意大小的有效载荷。

在这个具体的案例中,乍一看似乎您正试图以单个响应消息的形式访问响应负载.payload,但它不存在,因为没有单个响应消息——但 CoAPython 的块层应该处理这一点。您可能在库实现中遇到了一个错误,这在其问题跟踪器中最容易讨论。


推荐阅读