static void error_callback(void *arg, err_t err)
{
debug("\r\n error_callback:%d.", err);
switch(err)
{
/* PC上位机如果正常运行中闪退或者不良退出会出现这个错误,此时服务器需要释放掉连接 */
case ERR_RST:
tcp_server_disconnect(tcppcb);
break;
default:break;
}
}
static void tcp_server_disconnect(struct tcp_pcb *tpcb)
{
tcp_arg(tpcb, NULL);
tcp_recv(tpcb, NULL);
#if (USE_SENT_CALLBACK == 1)
tcp_sent(tpcb, NULL);
#endif
#if (USE_POLL_CALLBACK == 1)
tcp_poll(tpcb, NULL, 0);
#endif
#if (USE_ERROR_CALLBACK == 1)
tcp_err(tpcb, NULL);
#endif
//tcp_abort(tpcb); /* 关闭连接并释放tpcb控制块 */
tcp_close(tpcb);
tcppcb = NULL;
debug("\r\n disconnected.");
}
修改error_callback函数,将tcp_server_disconnect函数中的tcp_abort替换为tcp_close。