OpenEdv-开源电子网

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

移植LWIP时接收数据错误,急急急!!!

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2016-11-29
在线时间
12 小时
发表于 2016-11-30 13:28:22 | 显示全部楼层 |阅读模式
1金钱
在STM32F429下移植的原子的TCP服务器实验,正常收发数据正常,板子主动断开连接也没问题,但网络调试助手主动关闭连接是,服务器端收到2049个数据;TCP_SERVER_RX_BUFSIZE开到2050也不行,再开大点儿网络调试助手断开连接时直接进错误中断了,麻烦原子哥分析一下可能是哪些原因,谢谢!


                                if((recv_err = netconn_recv(newconn,&recvbuf)) == ERR_OK)          /* 一直查询接收数据         */
                                {               
                                        CPU_CRITICAL_ENTER();                                                 /* 关中断                                                 */
                                        memset(tcp_server_recvbuf,0,TCP_SERVER_RX_BUFSIZE);  /* 数据接收缓冲区清零 */
                                        for(q=recvbuf->p;q!=NULL;q=q->next)                                  /* 遍历完整个pbuf链表 */
                                        {
                                                /* 判断要拷贝到TCP_SERVER_RX_BUFSIZE中的数据是否大于TCP_SERVER_RX_BUFSIZE的剩余
                                                空间,如果大于的话就只拷贝TCP_SERVER_RX_BUFSIZE中剩余长度的数据,否则的话就拷贝
                                                所有的数据 */
                                                if(q->len > (TCP_SERVER_RX_BUFSIZE-data_len)) /* ???网络调试助手主动断开时q->len=2049 */
                                                        memcpy(tcp_server_recvbuf+data_len,q->payload,(TCP_SERVER_RX_BUFSIZE-data_len));
                                                else
                                                        memcpy(tcp_server_recvbuf+data_len,q->payload,q->len);
                                                data_len += q->len;         


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

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2016-11-29
在线时间
12 小时
 楼主| 发表于 2016-11-30 13:32:28 | 显示全部楼层
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2016-11-29
在线时间
12 小时
 楼主| 发表于 2016-11-30 13:42:26 | 显示全部楼层
网络调试助手主动断开时板子收到数据 2157 字节
bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 51 44 0 8 f9 44 0 8 15 45 0 8 31 45 0 8 4d 45 0 8 79 33 0 8 89 33 0 8 99 33 0 8 a9 33 0 8 b9 33 0 8 c9 33 0 8 d9 33 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 69 45 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 63 d8 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 6d ff 0 8 bb 2 0 8 bb 2 0 8 6d 44 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 e9 33 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 f9 33 0 8 9 34 0 8 19 34 0 8 29 34 0 8 39 34 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 49 34 0 8 59 34 0 8 69 34 0 8 8d ff 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 bb 2 0 8 4b 1c 1 2b 98 bf 70 47 2d e9 f0 3 91 1c 9b 8 b1 f8 4 80 b1 f8 2 90 a 88 31 f8 2 cc 80 44 81 44 2 44 84 44 d9 f8 0 70 d8 f8 0 60 15 68 dc f8 0 40 c9 f8 0 60 c8 f8 0 70 cc f8 0 50 14 60 d9 f8 4 70 d8 f8 4 60 55 68 dc f8 4 40 c9 f8 4 60 c8 f8 4 70 cc f8 4 50 54 60 8 31 5b 1e d5 d1 bd e8 f0 3 70 47 4b 1c 1 2b 98 bf 70 47 2d e9 f0 3 91 1c 9b 8 b1 f8 4 80 b1 f8 2 90 a 88 31 f8 2 cc 0 eb 58 8 0 eb 59 9 0 eb 52 2 0 eb 5c c d9 f8 0 70 d8 f8 0 60 15 68 dc f8 0 40 c9 f8 0 60 c8 f8 0 70 cc f8 0 50 14 60 8 31 5b 1e df d1 bd e8 f0 3 70 47 df f8 c d0 1 f0 6a fb 0 48 0 47 3d 54 1 8 18 5c 1 20 df f8 38 0 1 68 41 f4 70 1 1 60 bf f3 4f 8f df f8 2c 0 1 68 21 f0 40 41 1 60 bf f3 6f 8f 8 48 80 47 8 48 0 47 fe e7 fe e7 fe e7 fe e7 fe e7 fe e7 fe e7 fe e7 fe e7 fe e7 88 ed 0 e0 34 ef 0 e0 d9 d6 0 8 6d 2 0 8 72 b6 70 47 62 b6 70 47 ef f3 10 80 72 b6 70 47 80 f3 10 88 70 47 30 bf 70 47 20 bf 70 47 b0 fa 80 f0 70 47 90 fa a0 f0 b0 fa 80 f0 70 47 90 fa a0 f0 70 47 9f ed 1a 1a f5 ee 0 a 40 ee 1 a bd ee e0 a f5 ee c0 a 10 ee 10 a f1 ee 10 fa 38 bf 40 1e 0 ee 10 a 13 49 f7 ee 0 1a b8 ee c0 a 30 ee c0 a df ed f a 20 ee 20 a fc ee c0 a 10 ee 90 a c0 f3 8 0 0 ee 90 a 1 eb 80 0 f8 ee 60 a 90 ed 1 1a 70 ee 60 a 90 ed 0 a 71 ee e
0 1a 21 ee 80 a 0 ee 81 a 70 47 83 f9 22 3e 0 0 0 44 a8 f6 1 8 df ed 19 a b5 ee c0 a 60 ee 20 a bd ee e0 1a 11 ee 10 a f1 ee 10 fa 38 bf 40 1e 0 ee 10 a 13 49 f7 ee 0 1a b8 ee c0 a 30 ee c0 a df ed f a 60 ee 20 a bc ee e0 a 10 ee 10 a c0 f3 8 0 0 ee 10 a 1 eb 80 0 b8 ee 40 a 90 ed 1 1a 70 ee c0 a 90 ed 0 a 71 ee e0 1a 21 ee 80 a 0 ee 81 a 70 47 83 f9 22 3e 0 0 0 44 a8 f6 1 8 2d e9 f0 41 6 46 2d ed 2 8b 8c 46 0 88 73 68 1 eb 80 4 45 8 27 46 1 eb 85 0 4 eb 85 2 5f ea 95 8 7d d0 0 bf d1 ed 0 3a d4 ed 0 1a 91 ed 1 2a 94 ed 1 3a 73 ee a1 6a 91 ed 2 4a 91 ed 3 1a d4 ed 2 2a d4 ed 3 5a 90 ed 0 8a 90 ed 1 7a 90 ed 2 a 90 ed 3 6a 92 ed 0 5a d2 ed 1 4a d2 ed 2 7a d2 ed 3 a c1 ed 0 6a 72 ee 3 6a 73 ee e1 3a 74 ee c7 1a c1 ed 1 6a 74 ee 22 6a 74 ee 62 2a 37 ee c0 4a c1 ed 2 6a 71 ee 25 6a c1 ed 3 6a 72 ee 43 6a 31 ee 65 2a 38 ee 5 1a 35 ee 48 3a 80 ed 0 1a 37 ee 24 1a 80 ed 1 1a 30 ee 27 1a 80 ed 2 1a 36 ee 20 1a 80 ed 3 1a 30 ee c6 1a 93 ed 0 a d3 ed 1 a 63 ee 80 4a 26 ee a0 5a 66 ee 80 5a 63 ee a0 3a 74 ee 85 4a 75 ee e3 3a c4 ed 0 4a 63 ee 20 4a c4 ed 1 3a 61 ee 80 3a 61 ee a0 a 23 ee 0 a 74 ee e3 1a 30 ee 80 a c2 ed 0 1a 82 ed 1 a 93 ed 2 a d3 ed 3 a 62 ee 80 3a 22 ee 20 3a 0 e0 24 e0 62 ee a0 1a 22 ee 0 2a 73 ee 83 2a 10 30 10 31 72 ee 61 1a c4 ed 2 2a 24 ee 20 2a c4 ed 3 1a 61 ee 0 1a 61 ee 20 a 24 ee 0 a 10 33 32 ee 61 1a 10 34 30 ee 80 a 82 ed 2 1a 82 ed 3 a 10 32 b8 f1 1 8 7f f4 5d af 29 46 2 23 60 46 72 68 0 f0 81 fc 72 68 29 46 bd ec 2 8b 38 46 bd e8 f0 41 2 23 0 f0 77 bc 2d e9 f3 4f 2d ed 4 8b 87 b0 b 98 0 88 47 8 1 eb 87 0 0 eb 87 6 6 eb 87 5 cd e9 0 56 dd f8 2c 80 a5 f1 4 c c eb 87 3 cd e9 2 1 4f ea 57 9 d8 f8 4 80 4 27 cd e9 4 97 d1 ed 0 a 96 ed 0 a 90 ed 1 1a 95 ed 1 3a 70 ee 80 2a 70 ee c0 3a d1 ed 1 a 96 ed 1 a 4 1f 32 1f 30 ee 80 2a 70 ee c0 1a 31 ee 23 a d0 ed 0 a 32 ee 41 5a 33 ee c1 1a 30 ee 43 4a 71 ee e0 4a 95 ed 0 a 70 ee a1 1a 35 ee 43 5a 74 ee 80 5a 72 ee e0 4a 70 ee a2 a
71 ee c0 1a 31 ee 3 1a 74 ee c0 4a 30 ee 80 a 6 27 8 f1 8 a 81 ed 0 a 90 ed 1 a d5 ed 1 a 8 f1 10 b 30 ee 2 a 8 f1 18 8 30 ee 20 a 81 ed 1 a 80 ed 0 4a c0 ed 1 5a c6 ed 0 4a 86 ed 1 5a 85 ed 0 1a c5 ed 1 1a dd f8 10 90 8 30 8 31 8 35 8 36 a9 f1 2 9 5f ea 59 9 0 f0 7 81 0 bf d1 ed 0 a 96 ed 0 a d0 ed 1 1a d5 ed 1 4a 30 ee 80 2a 30 ee c0 5a d1 ed 1 a 96 ed 1 a 70 ee 80 2a 30 ee c0 1a 31 ee 85 a d5 ed 0 a 30 ee 64 4a 90 ed 0 a 31 ee 40 3a 30 ee 1 1a 73 ee 20 5a 32 ee 40 3a 30 ee 2 a 31 ee 60 1a 73 ee 60 3a 30 ee 20 a 32 ee e1 3a 75 ee 61 1a 81 ed 0 a 90 ed 1 a d5 ed 1 a 33 ee 64 3a 30 ee 22 a 71 ee a4 1a 30 ee 20 a 81 ed 1 a d4 ed 0 2a dc ed 0 4a 54 ed 1 a 1c ed 1 a 32 ee a4 7a 32 ee e4 9a 72 ee e4 2a 52 ed 1 8a 70 ee 80 7a 30 ee c0 2a 72 ee e8 2a d2 ed 0 a 93 ed 0 a 13 ed 1 8a 30 ee c0 5a 72 ee 88 6a 77 ee e8 2a 35 ee 2 6a 32 ee c8 5a 77 ee 60 2a 72 ee c0 4a 70 ee c0 2a 70 ee 87 a 72 ee c2 2a 30 ee 80 a 38 ee 68 2a 84 ed 0 a 12 ed 1 a 53 ed 1 a 32 ee 49 2a 30 ee 27 a 30 ee 20 a 4 ed 1 a 9a ed 0 a da ed 1 a 64 ee 0 7a 25 ee a0 7a 65 ee 80 5a 24 ee 20 4a 37 ee 87 7a 35 ee c4 4a 80 ed 0 7a 80 ed 1 4a 26 ee a0 4a 66 ee 0 5a 66 ee 20 a 26 ee 80 a 8 30 34 ee 65 4a 8 31 30 ee 80 a 82 ed 0 4a 8 3c 2 ed 1 a 9b ed 0 a db ed 1 a dd f8 14 e0 23 ee 80 4a 63 ee 20 5a 23 ee 0 3a 63 ee a0 3a 8 3a 34 ee 25 4a b eb 8e b 33 ee 63 3a 86 ed 0 4a a f1 8 a 86 ed 1 3a b1 ee 64 3a 8 36 63 ee 0 3a 25 ee 20 3a 25 ee 0 a 64 ee a0 a 33 ee c3 3a 30 ee c0 a 8c ed 0 3a c ed 1 a 98 ed 0 a d8 ed 1 a 8 eb 87 8 61 ee 80 3a 21 ee 20 3a 21 ee 0
@openedvadmin
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2016-11-29
在线时间
12 小时
 楼主| 发表于 2016-11-30 13:43:58 | 显示全部楼层
LWIP调试输出的错误信息是
Assertion "pbuf_free: sane type" failed at      line 635 in ..\..\User\APP\lwip\lwip-1.4.1\src\core\pbuf.c

@openedvadmin
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2016-11-29
在线时间
12 小时
 楼主| 发表于 2016-11-30 14:16:10 | 显示全部楼层
                                if((recv_err = netconn_recv(newconn,&recvbuf)) == ERR_OK)          //接收到数据
                                {               
                                        OS_ENTER_CRITICAL(); //关中断
                                        memset(tcp_server_recvbuf,0,TCP_SERVER_RX_BUFSIZE);  //数据接收缓冲区清零
                                        for(q=recvbuf->p;q!=NULL;q=q->next)  //遍历完整个pbuf链表
                                        {
                                                //判断要拷贝到TCP_SERVER_RX_BUFSIZE中的数据是否大于TCP_SERVER_RX_BUFSIZE的剩余空间,如果大于
                                                //的话就只拷贝TCP_SERVER_RX_BUFSIZE中剩余长度的数据,否则的话就拷贝所有的数据
                                                if(q->len > (TCP_SERVER_RX_BUFSIZE-data_len)) memcpy(tcp_server_recvbuf+data_len,q->payload,(TCP_SERVER_RX_BUFSIZE-data_len));//拷贝数据
                                                else memcpy(tcp_server_recvbuf+data_len,q->payload,q->len);
                                                data_len += q->len;         
                                                if(data_len > TCP_SERVER_RX_BUFSIZE) break; //超出TCP客户端接收数组,跳出       
                                        }
                                        OS_EXIT_CRITICAL();  //开中断
                                        data_len=0;  //复制完成后data_len要清零。       
                                        printf("%s\r\n",tcp_server_recvbuf);  //通过串口发送接收到的数据
                                        netbuf_delete(recvbuf);
                                }else if(recv_err == ERR_CLSD)  //关闭连接
                                {
                                        netconn_close(newconn);
                                        netconn_delete(newconn);
                                        printf("主机:%d.%d.%d.%d断开与服务器的连接\r\n",remot_addr[0], remot_addr[1],remot_addr[2],remot_addr[3]);
                                        break;
                                }

正常情况下调试助手主动断开TCP连接时,是不是recv_err == ERR_CLSD?
@@openedvadmin
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-9 05:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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