I read about sending pings or some "heart beat" periodically. Who should send the pings and when, for an efficient implementation, as the ping packets will get mixed up with the actual data.
Tcp packets require an ACK to be sent right? If the client sends some data, and doesn't receive an ACK, we detected it right? But why doesnt that happen in a half open connection?