I have an ESTABLISHED socket connection between two applications on two systems. The client app performs a successful socket write(), but the server app (sometimes) does not receive the data. Not surpising, because netstat shows that the local Send-Q contains the data.
Stevens says that this only happens if Nagel is disabled (not applicable), or if the remote receive Q is full (not true). So what else could be the problem? Network hardware? The connect() *always* succeeds, but data is *sometimes* sent, and *sometimes* held in the local TCP Send-Q.