应该是这个原因
个人同意xiaorui所贴链接的观点。
paho mqtt内部是使用pipe管道进行数据收发的。在实际使用时,通过write函数写缓冲区,实际上是使用rt_pipe_write函数将数据进行搬运,逐个字节写到环形缓冲区中,然后再通过文件描述符实际通过你的网口发送出去,可能存在分包和多个包合并的情况,导致发送失败。
默认的PIPE缓冲区的大小似乎是512。
我个人更加喜欢用kawaii-mqtt,或者mqttclient,作者是jiejietop,很优秀的一位程序员。这个client适配FreeRTOS,RT-Thread,Win,Linux等。
mymqtt可以发长报文
但是lan8720工作时发热严重,不知道什么原因造成的。