// First, we should enable this macro in lwipopts.h
#define LWIP_TCP_KEEPALIVE 1
// The following code is implemented after tcp_new() or in tcp_connected call back
... xxx_connected(..., struct tcp_pcb* tpcb, ...) { tpcb->so_options |= SOF_KEEPALIVE; tpcb->keep_idle = 5000; // ms tpcb->keep_intvl = 5000; // ms tpcb->keep_cnt = 2; // report error after 2 KA without response }