新手入门
- 积分
- 17
- 金钱
- 17
- 注册时间
- 2021-11-23
- 在线时间
- 3 小时
|
2金钱
最近在用STM32F407+LWIP1.4.1做一个tcp的客户端,用的裸机raw编程,网口调试助手做服务端,客户端每隔2s向服务端发送一帧数据,大小为178字节,现在遇到了两个问题,1:在发送了几十次数据后,客户端就接收不到服务端的ACK包了(每100%复现,排除硬件连接问题),抓包显示服务端是给了ACK包的;2在一定时间没有收到ACK包后,服务器会调用tcp_abort强行关闭该连接,然后重新连接,但这时候,服务端不会响应新的SYN包。
整个TCP通信流程函数如下:tcp_new()->tcp_connect(),连接成功后,每隔2s调用tcp_write(),tcp_output();,在收到服务端对每帧数据的ACK后(),才会进行下次发送,如果超过10每收到ACK包,调用 tcp_abort();然后从新连接,请教一下这方面比较熟悉的朋友,这个两个问题大概是什么原因引起的呢?
|
最佳答案
查看完整内容[请看2#楼]
你有一直轮询 这个函数吗lwip_pkt_handle();//处理以太网数据,即将数据提交给LWIP,connect成功后一般不会断的
|