天线|RF射频
直播中

徐铭潞

8年用户 276经验值
私信 关注
[问答]

为什么STM32F107+uCOS+LWIP+DP83848服务器程序只能单独运行?

最近遇到个坑爹问题,我用STM32F107+UCOS+LWIP+DP83848VV 搭建一个能同时运行客户端和服务器的程序,服务器和客户端程序单独运行是没问题的,在同时运行的情况下,测试结果如下:
测试一、设备开启2个任务,在程序初始化完成后,同时启动客户端任务和服务器任务,设备在第一次成功连接上PC机的服务器的情况下,PC机也能连接上设备的服务器程序。
结论:在设备第一次正常连接PC机服务器的情况下,设备的服务器程序和客户端程序能正常运行

测试二、设备开启2个任务,在程序初始化完成后,同时启动客户端任务和服务器任务,此时关闭PC机服务器程序,设备在第一次尝试连接PC机服务器失败后,PC机能连接上设备的服务器程序,在设备第N次(N大于等于2)连接PC机服务器失败后,PC机连接设备的服务器程序失败;
结论:设备若是在第一次连接PC机服务器失败之后,PC机将再也无法连接设备的服务器。(怎么解决啊???)
求各路大神指点下,到底问题出在哪???
测试一实验效果如下:

这是我的工程代码,参考的是金龙STM32F107的开发板程序,不知道有木有人知道这到底是咋回事。。。。怎么改!!
STM32F107 UCOS LWIP Server Client.rar (8.19 MB )

回帖(8)

李耀鑫

2019-10-11 08:03:02
memp_free(MEMP_TCP_PCB, pcb);应该这样就释放了。
最简单的,你开始echoclient_pcb = tcp_new();一次后不再执行,反正你没释放,然后看看现象就知道。
反正我看到你一起来while,然后一直这样tcp_new,如果没释放感觉一会pcb个数应该就满了。
举报

陈燕

2019-10-11 08:12:43
echoclient_pcb = tcp_new();
在tcp_connect失败后不用释放吗?
举报

王帅

2019-10-11 08:31:56
不知道啊,我试试
举报

田晴

2019-10-11 08:41:14
怎么释放啊???不懂啊。。。。呜呜呜~~
举报

更多回帖

发帖
×
20
完善资料,
赚取积分