Network way: GPRS modem dial via PPPoS.
I am facing a problem that there are a lot of FIN_WAIT_1 state TCP connections, because I broke network connection when my program called lwip_close() to close a socket descriptor. FIN_WAIT_1 state indicates that the client sends TCP FIN packet but not receive the TCP ACK packet. In my scenario, when the program has sent tcp data, it needs to shutdown the GPRS modem(so network connection is broke) due to low power consumption. It may not receive the TCP ACK packet actually. As far as I know, API "lwip_shutdown()" can shutdown a TCP connection, but it seems that it doesn't work.