日期:2014-05-16  浏览次数:20936 次

TCP连接总断,会是什么原因啊
在linux下面写了一个服务器程序,在外网运行的情况不太理想:有一部份用户反映连接总是中断(TCP),但程序中由服务器主动关闭连接的地方(closeSocket)并不多,而且肯定不是那几处关闭的,换句话说,肯定不是程序的逻辑错误造成的。以上观点还有一个证据证明,就是在内网连接此服务器多少天都不会断。
很有可能是网络问题?但这个服务器程序有一个windows版本,那个版本就不容易断连接。
是不是这两种操作系统的底层有区别呢?请大家各抒已见,积极地讨论这个问题?
(同样的问题也出现在飞信,msn,QQ游戏等tcp连接的程序上,我使用这几种软件就常掉线)

------解决方案--------------------
我觉得应该是unix和windows内核中tcp链接的超时机制和不一样,因为客户端一般为window,和window
服务器链接时,两端的接口一样.而和unix服务器链接时,就存在一定的差异.
unix和unix连接时一般也不存在这样的问题.

还有就是一般网速非常慢时更容易掉线.这我就觉得和两种系统对超时的处理上可能有一定的差异.
------解决方案--------------------
支持楼上说法。。。。
--------------
但有一点需要说说的
如果你做C/S版本的软件,数据库放在unix上的oracle,会不会出现断线也连接不上的情况,
防火墙已设置好的情况下。


------解决方案--------------------
会不会是防火墙的问题?把linux的防火墙关了试试。
------解决方案--------------------
网络闪断会出现这种问题.
------解决方案--------------------
关注,但觉得超时的原因可能性不大
------解决方案--------------------
聊天工具用的是TCP连接么?

感觉更适合用UDP
------解决方案--------------------
不应该是底层实现的问题吧, 底层是TCP, 和系统无关, 只和驱动程序有关.
我认为可能性更大的是你的服务器端对socket描述符的回收机制问题, linux对socket描述符的回收总是会出现慢半拍的情况.