天线|RF射频
直播中

姜钰

7年用户 192经验值
私信 关注
[问答]

请问ucos下lwip服务器经常死机该怎么办?

项目进行快两个月了,任务很急,但是卡在了LWIP这块。下面我仔细描述一下,我要实现的功能和遇到的问题。
相关硬件配置:STM32f407   lan8720A
软件:ucos 2.9(原子哥移植好的) lwip1.4协议栈(原子哥移植好的)         ;
         fatfs       u***Host  (和这里遇到的问题没什么关系)
功能上:我只说局部功能吧,用lwip的NETCONN接口实现一个TCP服务器(参照原子哥的例程,只能同时服务与一个客户端的SERVER),然后java的TCP客户端连接板子的服务器,发送base64加密的数据。板子的服务器接收到数据之后,解密,解包(解析XML),处理。  同时板子也是客户端,发送数据时,连接java服务器,发送完成后,关闭套接字。其实,整个模型是 双服务的。

那么问题来了!
    板子的应用层代码是没有问题的(因为之前测试过,可以使用),现在有这样的情况,java发来第一包数据,我的板子(TCP服务器)处理完成之后,就会死机。于是,我查看打印信息,我发现,java的客户端连接没有断开,此时,又会有java的客户端连接过来,系统死机(java的客户端也是,单线程发送数据的,中间有延时,发送完成之后,断开连接)。接着,我用网络调试助手测试,结果发现:点击连接,断开时,板子服务器没有问题,但是,点击连接,然后发送数据,关闭连接(模拟java客户端),连续几次之后,系统就会死机。所以,我怀疑,是不是原子哥移植的LWIP是不是有问题?或者是我自己重新配置的lwipopts.h有问题(其实也没怎么改),希望大神来帮助!!!如果懂LWIP的大神帮我,我可以给出代码。
                                                                                                                                              本人QQ:653781964
tcp_server.c
lwipopts.h
app_thread.c(提供了在线检测网络状态的方法,可供网线热插拔,分享给大家)
已上传


lwipopts.h (4.59 KB )
tcp_server_demo.c (6.52 KB )
tcp_server_demo.h (834 Bytes )
app_thread.h (346 Bytes )
app_thread.c (10.04 KB )

回帖(9)

武彩霞

2019-9-19 07:25:54
帮顶。。。。
举报

李云

2019-9-19 07:42:04
我们给出的netconn的服务器只能连接一个客户端,不能连接多个客户端的,你需要自行设计并发服务器。
举报

石俊梅

2019-9-19 07:56:21
服务器模型,我不需要改,客户端是在一个线程中发送数据的,发送完成断开连接。现在问题是,板子服务器接收数据会死机,任务堆栈已经是2000*4B了
举报

李森

2019-9-19 08:07:54
今天测试发现,第一次调用netconn_recv(newconn,&recvbuf)) 可以阻塞线程,第二次netconn_recv(newconn,&recvbuf))就无法阻塞线程
举报

更多回帖

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