Невозможно получить ответ о полезной нагрузке, если размер полезной нагрузки превышает 1000 КБ. (Coap) - PullRequest
1 голос
/ 21 июня 2020

Я использую библиотеки Coapthon и Helperclient для получения, размещения и публикации данных. Я использую указанную ниже строку кода для получения полезной нагрузки. он работает нормально без каких-либо проблем, если размер длины паузы не превышает 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' не имеет атрибута 'payload'

Может ли кто-нибудь помочь ему, как я могу получить полезные данные большой длины? Я использую python скриптов и библиотек копатонов, чтобы добиться этого.

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

1 Ответ

0 голосов
/ 22 июня 2020

CoAP ограничен по размеру сообщения одним пакетом UDP.

Обычно, когда максимальный размер превышен, сервер и клиент возвращаются к так называемой блочной передаче. Это позволяет передавать полезные данные практически произвольного размера.

В этом конкретном случае на первый взгляд кажется, что вы пытаетесь получить доступ к полезной нагрузке ответа как .payload единственного ответного сообщения, которого не существует, потому что нет одно ответное сообщение - но об этом должен позаботиться блочный уровень CoA Python. Возможно, вы столкнулись с ошибкой в ​​реализации библиотеки, которую проще всего обсудить в его системе отслеживания ошибок .

...