日期:2014-05-20  浏览次数:20943 次

java 如何让socket的两端一直保持着开放,随时接受和发送数据?
java  如何让socket的两端一直保持着开放,随时接受和发送数据?

------解决方案--------------------
去看看MIMA,异步IO实现的,能满足你的需求
------解决方案--------------------
引用:
java  如何让socket的两端一直保持着开放,随时接受和发送数据?

用while()循环不断接受和发送,要用线程啊记得。。。然后添加事件响应 关闭程序就调用socket.close();
------解决方案--------------------
就相当于ServerSocket连接一个客户端就再建一个,随时准备接受新的连接
------解决方案--------------------
可以用一个while()循环啊!!
------解决方案--------------------
通信双方,在链路空闲的时候,定时发送一些垃圾数据(或者特定的数据),维持连接即可。
这样的话,这个连接就可以持久的存在,即,长连接。

------解决方案--------------------
引用:
通信双方,在链路空闲的时候,定时发送一些垃圾数据(或者特定的数据),维持连接即可。
这样的话,这个连接就可以持久的存在,即,长连接。

不发送数据,也不调用close(),这个连接也会断掉么?
------解决方案--------------------
两端启用while(true){}循环就搞定了
------解决方案--------------------
引用:
引用:通信双方,在链路空闲的时候,定时发送一些垃圾数据(或者特定的数据),维持连接即可。
这样的话,这个连接就可以持久的存在,即,长连接。
不发送数据,也不调用close(),这个连接也会断掉么?

只要没有关闭不会的,除非双方主动关闭了连接。客户端关闭连接后一般是可以重连的,服务器发心跳消息是检测对方是否存在,不存在就关闭连接,不消耗资源而已
------解决方案--------------------
引用:
引用:
引用:通信双方,在链路空闲的时候,定时发送一些垃圾数据(或者特定的数据),维持连接即可。
这样的话,这个连接就可以持久的存在,即,长连接。
不发送数据,也不调用close(),这个连接也会断掉么?
只要没有关闭不会的,除非双方主动关闭了连接。客户端关闭连接后一般是可以重连的,服务器发心跳消息是检测对方是否存在,不存在……

了解了,谢谢
------解决方案--------------------
引用:
不发送数据,也不调用close(),这个连接也会断掉么?

采用TCP协议的通讯中,如果长时间不发送数据,连接会有被断开的可能。
即使通信双方,都把超时时间设置得无限大,整个TCP连接,也会被中间节点(比如路由器,三层交换机等数据转发设备,它们也有维护连接的超时设置)强行端开,并且这种断开方式,是不会向通信双方发送任何数据的,因此,这种情况下通信双方无法感应到连接已经被cut掉了。希望你能明白。
------解决方案--------------------
引用:
引用:
不发送数据,也不调用close(),这个连接也会断掉么?
采用TCP协议的通讯中,如果长时间不发送数据,连接会有被断开的可能。
即使通信双方,都把超时时间设置得无限大,整个TCP连接,也会被中间节点(比如路由器,三层交换机等数据转发设备,它们也有维护连接的超时设置)强行端开,并且这种断开方式,是不会向通信双方发送任何数据的,因此,这种情况下通信双方无法……

明白你的说明,
我在想,Socket和ServerSocket类会不会是在后台处理的TCP通信,即TCP连接超时,已经断掉,但在Socket发送数据时,Socket和ServerSocket类会自动重新建立TCP连接,然后再将数据发送出去。
我得测试下这个猜想,看看Socket和ServerSocket是不是这么处理的。