This is a little out there but you aren't connecting your local socket to an outside socket through a IP Masquarading router by any chance?? this one has bitten moi before. You may be getting timed out at the router. I only know the exact fix on a Linux based router.
Assuming 2.2 > kernel nad IPCHAIN:
ipchains -M -S 86400 60 120
which set tcp tcpfin udp timeouts.
Again this probably a long shot.
mitd-Made in the Dark
'My favourite colour appears to be grey.'