LWIP移植成功了

2020-01-01 17:34发布

成功移植lwip1.3.1 1.3.2 1.4.1,裸机能跑tcp客户端和服务器。
开心之余,又有些问题需要请教了,lwip里面如何处理断线重连的问题?

下面是我实验的现象:
我在裸机上使用lwip,tcp做了服务器和客户端,在连接后把网线拔掉,tcp_poll函数还是会被执行的,这时候把网线插上(还没出现abort错误),需要重新连接(端口没变,原连接已经没反应了),连接后上一次连接的pcb仍然存在,这时候会发现轮询时候有两个pcb连接在运行。等了好几分钟后(关闭了保活设置)第一个pcb连接出现连接错误,自动断开。。。
这两个pcb占用同一个端口不会产生冲突吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
xhyzjiji
1楼-- · 2020-01-08 07:13
本帖最后由 xhyzjiji 于 2013-9-2 18:20 编辑
efayu 发表于 2013-9-2 11:26
本人刚开始走51+uIP,先MARK,回头整一下STM32+LwIP


uIP移植起来也比较简单,过会也把移植的uIP1.0上传吧
有同学说可以把lwip的ping的速度提升到小于1ms,裁剪了很多不使用的内容,但他不太愿意公开他的方法。。。。
kinsno
2楼-- · 2020-01-08 11:00
 精彩回答 2  元偷偷看……
落叶知秋
3楼-- · 2020-01-08 11:11
xhyzjiji 发表于 2013-9-1 21:31
也可以把错误警告贴上图,大家研究一下

添加了sys_now()这个函数后,LwIP1.4.1可以跑起来了。可以ping通。
但是,在测试中遇到了这样一个问题:(图片中发了1000字节,只回发了512字节)

     tcp_write()了之后,数据发了一遍后,就发不出去了。

多次测试发现,当建立一个新的连接后,板子把接收到的数据回发,
只能回发1个TCP_MSS(设置的是512)的数据,之后就发不了。

串口调试:在慢启动tcp_slowtmr()里不断重发未发出数据,但PC这边
没有收到,重发次数超限后,出现:
tcp_slowtmr: max DATA retries reached //超出数据重发次数
tcp_pcb_purge //清除tcp_pcb
tcp_pcb_purge: not all data sent
tcp_pcb_purge: data left on ->unacked
tcp_slowtmr: no active pcbs
tcp_slowtmr: no active pcbs
tcp_slowtmr: no active pcbs

用wireshark抓包也有这个现象。

楼主有遇到过这种情况吗?使用1.4.1有没有遇到问题啊?裸系统的。
Coobila
4楼-- · 2020-01-08 16:58
以太网好东西,占个座,
baoqi
5楼-- · 2020-01-08 17:44
顶,谢谢分享,
fy024
6楼-- · 2020-01-08 18:09
不错的学习资料

一周热门 更多>