This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BOOSTXL-CC3135:发布时 MQTT 的最大大小

Guru**** 2394295 points
Other Parts Discussed in Thread: BOOSTXL-CC3135

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/917862/boostxl-cc3135-mqtt-maximum-size-on-publish

器件型号:BOOSTXL-CC3135

您好!  

我正在使用 与 STM32微控制器连接的 BOOSTXL-CC3135 WIFI 模块。  

作为主机驱动程序、我使用的是版本号  3.0.1.60.我还在使用同一软件包中提供的 MQTT 库。  

我对 MQTT 与套接字驱动器的搭配使用有点困惑。  

但是 、我发现很难通过 MQTT (使用发布功能)发送大小超过0x8000字节的数据包。  

让我解释一下、在 slnetsock.c 文件中 、SlNetSock_send 函数能够发送长度表示为 uint32_t 类型的数据。  

相反、通过调用 sockSend 函数指针、sl_socket.c 文件中的 sl_Send 函数被声明为以 _i16表示的长度发送数据。

我之前已经问过这个问题、但很遗憾、我还没有得到解答、有关更多详细信息、请访问链接如下:  

测试用例在标签重放中进行了详细说明、在这里、由于  从_i16转换为 uin32_t 值、sl_Send 函数的输出由一个负值表示。  

如何修复发送函数以发送大于0x8000字节的数据包?

此致、  

Ghada。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ghada、

    slNetSock 层是在本机 SImplink 主机驱动程序之上构建的抽象层。 slNetSock 层采用32位长度字段、但由于 SimpleLink 主机驱动程序的底层限制、您将被限制为16位长度。 具有该16位长度的原因是各个 TCP 或 UCP 数据包具有有效载荷大小限制、其中超过该限制的数据包在主机驱动器自动以该大小限制进行传输之前是碎片化的。 由于 TCP 数据包的此限制低至1472、因此可以使用16位长度字段。

    如果要发送大于该16位长度限制的数据包、则需要修改 MQTT 库、以便将 MQTT 发布消息拆分为多个 SlNetSock_SEND ()调用、这些调用将 MQTT 负载拆分为0x8000字节。

    此致、

    Michael