CH579 UDP接收长度最大只能549个字节?发送550个字节就不能接收了

在UDP Server Demo下测试,配置如下信息

#define RECE_BUF_LEN                          1460                               /* 接收缓冲区的大小 */

/* CH57xNET库TCP的MSS长度为536字节,即一个TCP包里的数据部分最长为536字节 */


#ifndef RX_BUF_SIZE

#define RX_BUF_SIZE                           1524                             /* CH57x MAC接收每个缓冲区长度,为4的整数倍 */

#endif


#ifndef CH57xNET_TCP_MSS

#define CH57xNET_TCP_MSS                      1460                               /* tcp MSS的大小*/

#endif


测试结果接收长度最大只能是549个字节,若发送550字节直接丢包

您好,CH579的以太网,TCP最大一包就是536字节,UDP模式下为549字节。如果您发送的数据大于这个一包的长度,需要您在代码里面做出分包的处理,然后发送。



CH579的以太网一包最大长度主要局限于以太网协议栈占用的空间大小,如果CH579支持标准帧长,那么以太网协议栈的SRAM占用体积会增加到25-26KB左右。这样用户可用空间就会较少。所以,为了让用户有更多的空间分配使用,协议栈将579以太网帧长度进行了限制。



请教下,我看到ch57x以太网协议栈库说明文档里面,通过修改CH57xNET_TCP_MSS该宏定义的值,可以使ch579接收的报文长度改变,最大值可以到1460,我设置后没有反应,接收的数据还是会分包,请问这个宏定义对CH579起作用吗?如果有效,具体该怎么设置呢?


您好,CH579因为RAM的问题,内部协议栈设置的TCP_MSS最大是536字节,暂不支持1460。发送大包,您只需要代码里面做好分包即可


请问TCP_MSS设置的值只能是536吗?还是说可以稍微再大一些,我的应用是使用tcp进行接收数据,一次的数据包大小不会超过800字节,现在的情况是接收数据会分包;


您好,TCP最多就是536无法修改。800字节,您得自己再程序里面做一下分包。


好的,谢谢解答!


只有登录才能回复,可以选择微信账号登录