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.

[参考译文] CC3135MOD:从套接字接收大数据

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/991223/cc3135mod-receiving-large-data-from-socket

器件型号:CC3135MOD

我们尝试通过 TCP 套接字向简单链路设备发送一个大小为4096的数据块、在接收器端、我们观察到这是在两个接收调用中接收的、第一个是1460长度、第二个调用中的剩余字节、 在第二个数据包中错误地接收数据、如果我们以1024字节数据包的形式接收数据、则可以正常工作。 接收代码如下:

totalbytes = 0U
状态= 0
Len = 4096;
字符 msg[4096];
执行
status = sl_Recv (socketID&msg[totalbytes]len-totalbytes0);
totalbytes += status
}while ((status >=0)&&(totalbytes < len));
if (状态< 0)
error_handler();

接收大量字节的正确方式是什么?

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

     您的逻辑似乎正常。

    假设您在堆栈中使用 msg Array (即、在函数 A 中定义不是全局变量)- 大型缓冲区会导致堆栈溢出。

    BR、

    Kobi  

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

    尝试使用大型全局数组时、结果相同。

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

    有趣。 是否已从堆栈中删除缓冲区?

    在这两种情况下、您是否在缓冲区中获得完全相同的内容? (堆栈和全局)  
    它仍然看起来像是应用程序问题(内存损坏)。 我们不熟悉类似的问题。

    BR、

    Kobi