java 如何让socket的两端一直保持着开放,随时接受和发送数据? java 如何让socket的两端一直保持着开放,随时接受和发送数据? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 去看看MIMA,异步IO实现的,能满足你的需求 用while()循环不断接受和发送,要用线程啊记得然后添加事件响应 关闭程序就调用socket.close(); 就相当于ServerSocket连接一个客户端就再建一个,随时准备接受新的连接 不发送数据,也不调用close(),这个连接也会断掉么? 两端启用while(true){}循环就搞定了 采用TCP协议的通讯中,如果长时间不发送数据,连接会有被断开的可能。即使通信双方,都把超时时间设置得无限大,整个TCP连接,也会被中间节点(比如路由器,三层交换机等数据转发设备,它们也有维护连接的超时设置)强行端开,并且这种断开方式,是不会向通信双方发送任何数据的,因此,这种情况下通信双方无法感应到连接已经被cut掉了。希望你能明白。 明白你的说明,我在想,Socket和ServerSocket类会不会是在后台处理的TCP通信,即TCP连接超时,已经断掉,但在Socket发送数据时,Socket和ServerSocket类会自动重新建立TCP连接,然后再将数据发送出去。我得测试下这个猜想,看看Socket和ServerSocket是不是这么处理的。 Java中的Socket类,连接操作是“用户”手动调用的(这里的用户是程序的开发者,API的调用者)。Socket类,没有提供重连方法,操作系统也不会自动重连,所以,Socket对象,在连接后,如果close掉连接,或者连接断开了,就没办法再使用了,这时要重新再创建一个Socket对象,重新对本地套接字进行绑定,重新连接服务端。要想实现断线重连的功能,需要“用户”自己编写代码,完成Socket对象的创建、绑定和连接操作。这个不是楼主提出的问题。楼主只想知道,怎样才能弄一个持久可用的连接来收发数据,那么,首选长连接形式。断线自动重连这种功能,要看程序是否有这样的需求了,一般程序都没I有这样的需求,如果发送断线,会有提示,用户(软件的使用者)会根据提示再次连接服务端。 嗯,preferme说的有道理。TCP双方在发送数据后,如果长时间(其实,这个时间也不是很长,秒级别)没有数据交流,socket会自动断开连接,断开后系统也不会自动重连。还有一种情况,任意一方close()掉,随机而来的是整个socket都会断开连接。 java播放音频文件的功能 java菜鸟问一个简单问题,一个流读取的问题 [求助]文件读取问题 关键字过滤 jsp 请问如何在同一台机器上选择运行不同版本的 Java VM? 关于JNI的问题? 那位能提供java applet实现的目录树(内容来自数据库)的源码? 循环里面执行sql插入语句只执行第一个插入,为什么?? JAVA如何调用其它语言的API,如MS的API,大体思路是什么呢?谢谢 applet 与 sqlserver数据库 线程锁的问题 不太清楚线程执行过程 用HttpURLConnection自动登入不能100%登入
即使通信双方,都把超时时间设置得无限大,整个TCP连接,也会被中间节点(比如路由器,三层交换机等数据转发设备,它们也有维护连接的超时设置)强行端开,并且这种断开方式,是不会向通信双方发送任何数据的,因此,这种情况下通信双方无法感应到连接已经被cut掉了。希望你能明白。
我在想,Socket和ServerSocket类会不会是在后台处理的TCP通信,即TCP连接超时,已经断掉,但在Socket发送数据时,Socket和ServerSocket类会自动重新建立TCP连接,然后再将数据发送出去。
我得测试下这个猜想,看看Socket和ServerSocket是不是这么处理的。
Socket类,没有提供重连方法,操作系统也不会自动重连,
所以,Socket对象,在连接后,如果close掉连接,或者连接断开了,就没办法再使用了,
这时要重新再创建一个Socket对象,重新对本地套接字进行绑定,重新连接服务端。要想实现断线重连的功能,需要“用户”自己编写代码,完成Socket对象的创建、绑定和连接操作。这个不是楼主提出的问题。楼主只想知道,怎样才能弄一个持久可用的连接来收发数据,那么,首选长连接形式。
断线自动重连这种功能,要看程序是否有这样的需求了,一般程序都没I有这样的需求,
如果发送断线,会有提示,用户(软件的使用者)会根据提示再次连接服务端。