SOCKET TCP连接怎样在不稳定的环境下保持正常通信?该如何处理

SOCKET TCP连接怎样在不稳定的环境下保持正常通信?
SOCKET TCP连接怎样在不稳定的环境下保持正常通信

在下在学习网络部分的时候,自己编写了N种服务模式的TCP网络服务端(包括EventSelect、重叠端口等),在局域网的环境中经历了各种测试,包括负载和稳定性等,均正常;可一旦放置于远程服务器上,就总是出现各种问题,最典型的现象就是客户端和服务端莫名其妙的断开连接,并且这种断开是SOCKET收不到提示消息的那种,只有循环的心跳检测才能发现。

我的手头有一个别人使用的网络游戏引擎库,该库运行的时候却完全没有该类问题,不管多么恶劣的网络环境下总能保持通信的运行,我使用sockmoon进行封包监视,发现该网络似乎并不是不会断开,而是每次在断开的瞬间自动重连,保持网络的完整。

我非常不理解这究竟是如何设计和做到的,因为远程TCP连接,就我自己见到的情况来说最典型的错误莫过于服务已经断开而服务端、客户端均不知道了,不管哪一端都收不到任何提示。

除此之外,到底有哪些好的方法可以保持在恶劣网络环境下的通信稳定呢?请各位达人指点一下,谢谢了。

------解决方案--------------------
有多恶劣?
我试过限制网速,每秒1字节,网络都不会断的
------解决方案--------------------
检测网络状态,网络假如断开了重连,心跳包还是要有的,有时网络断开了检测不到!!要通信稳定的话必须得弄超时重发的机制。。
------解决方案--------------------
探讨
检测网络状态,网络假如断开了重连,心跳包还是要有的,有时网络断开了检测不到!!要通信稳定的话必须得弄超时重发的机制。。