问题现象
1: 网络连接成功后,客户端连续连接服务器正常
2:在不连续连接服务器情况下,快速插拔网线,停止插拔,在连接服务器正常
3:快速插拔网线+连续连接服务端,多次后服务器死机,连接不上,网络链路正常,udp可以连接
解决方法
1: 原因:
在网络不稳定的情况下,多次连接服务器,每一次连接都要申请内存,断开后也没有释放内存,导致内存不足,申请失败,tcp服务器进入死机状态
2: 解决方法:
1> 在lwip目录下找到core目录下的tcp_in.c文件
2> 在 tcp_in.c 找到tcp_listen_input(struct tcp_pcb_listen *pcb)函数
3> 在 npcb = tcp_alloc(pcb->prio);之前加入下面这段代码
//这里出现问题,申请空间失败,导致tcp服务死机
npcb = tcp_active_pcbs;
while(npcb != NULL){
tcp_abort(npcb);
npcb = npcb->next;
}