OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3227|回复: 1

LWIP求助

[复制链接]

5

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2017-1-9
在线时间
21 小时
发表于 2018-12-11 11:20:19 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 AAonline 于 2018-12-11 18:40 编辑

请教大家一个问题
我在F4上移植了lwip, 创建了一个TCP客户端
我 #define 了 TCP_MSS 等于 1460,
这个时候如果TCP服务器给我发送了1000个字节长度的数据,
我是不是只会进一次TCP客户端的接收回调函数,然后在回调函数中循环接收这1000个字节,直到接收完成?
还是说我会以536字节进行分片接收?从而多次进入接收回调函数,直到接收完这1000个字节?

我现在的实验结果是以536字节分片多次进入接收回调函数,

实验现象与我的理解不符,所以想问一下是我理解有误还是其他什么问题

这是回调函数:
uint8_t tcp_client_recvbuf[TCP_CLIENT_RX_BUFSIZE];
err_t  TCP_Client_Recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
{
        uint32_t data_len = 0;
   
         if(p != NULL)
         {
                tcp_recved(pcb, p->tot_len);            
        
                memset(tcp_client_recvbuf, 0, sizeof(tcp_client_recvbuf));   
        
                SEGGER_RTT_printf(0, "enter tcp receive 1 \r\n");
        
                SEGGER_RTT_printf(0, "p->tot_len = %d \r\n", p->tot_len);
        
                while(p != NULL)
                {
                       SEGGER_RTT_printf(0, "enter tcp receive 2 \r\n");
            
                       SEGGER_RTT_printf(0, "p->len = %d \r\n", p->len);
            
                       memcpy(tcp_client_recvbuf + data_len, p->payload, p->len);  
            
                       TCP_Client_Send_Data(pcb, tcp_client_recvbuf + data_len, p->len);   
            
                       data_len += p->len;
            
                       p = p->next;
                }
         }
         else
         {
                 tcp_close(pcb);                        
         }
         pbuf_free(p);                                                            
         err = ERR_OK;
         return err;
}

这是我接收536个字节的打印信息:
1.png



这是我接收537个字节时候的打印信息:
2.png


很明显这个回调函数在接收的字节数大于536时又被调用了一次,按照我的想法既然定义了TCP_MSS为1460
那么只有接收的数据大于1460的时候才会出现上述情况,可是现在在接收数据大于536时就出现了,有没有哪位大哥知道的,指导一下小弟,谢谢啦~









正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-12-12 01:29:35 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 04:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表