C/S socket通信异常断开问题对象描述:
网通服务器:托管服务器,2003操作系统,天网防火墙,sql2005
客户网通终端
客户电信终端
本地电信服务器:(通过路由器映射的虚拟服务器)除了没有防火墙其他的跟网通服务器一样
本地电信终端
朋友网通终端问题描述:
本地局域网内,没有异常断开。
本地电信终端连网通服务器:异常断开
客户电信终端连网通服务器:正常
客户网通终端连网通服务器:异常断开
客户网通/电信终端连本地电信服务器:正常
朋友网通终端连本地电信服务器:异常断开关于异常断开的描述:
1。 登录之后,取几次房间列表,根据调试结果,前边正常,到第三次(很少数情况是第二次)取的时候,服务器接收到取房间列表的命令,构造房间列表的xml,一直到把xml写进socket结束,都没有异常,然后客户端却没有消息到达。之后不管客户端或者服务器操作socket,状态都是关闭了,服务器的异常是远程主机关闭了一个现有连接,客户端因为是flash,只得到一个连接状态关闭的标志。但是不管客户端或者服务器,都没有执行过关闭socket的操作,也没有关闭socket上边的流。
2。 登录之后,取几次公告列表,现象跟取房间列表一样。
3。 登录之后,取房间列表,进入一个房间,退出来,再取房间列表,进入一个房间,退出来,如此循环,没有任何问题。这样进退几次之后,在重复的只取房间列表,大多情况是也没有问题了。哪位碰到类似的问题没有,给个提示也行,到底是什么原因。

解决方案 »

  1.   

    没做socket 
    不是很清楚
      

  2.   

    thank you all the same..
      

  3.   

    不知道TCP通信采用的是长连接还是短连接。
    一般传输XML报文,使用短连接,可靠性要高一些。
    如果是长连接的话,发送方发送报文,一定要注意flush(清空缓冲区的数据)。
    表面上看,我同意楼上的观点。应该是网络状况不好造成的。
      

  4.   

    貌似是你每次发的数据都一样,几次之后就会断开,类似与url一样的时候不刷新数据的情况。
    你可以试一下在每次发消息后边都跟上一个当前时间。
      

  5.   

    yison_c 你头像最帅了。
    解决了。