暂时是解决了,通过调试发现在tcp_listen_input(struct tcp_pcb_listen *pcb)中有这样的语句:#if TCP_LISTEN_BACKLOG
pcb->accepts_pending++;
#endif;而在tcp_close(struct tcp_pcb *pcb)函数里没有相应的减操作,于是在case CLOSE_WAIT:状态下,添加tcp_listen_pcbs.listen_pcbs->accepts_pending--;语句,可以了。不知道我这样解决对不对,反正是用着了。要是你有什么好的解决办法,请指正。