用sendUrgentData这个来判断服务端是否异常关闭
想实现自动连接服务端,如果用
socket = new Socket("192.168.1.4",1821)
socket.connect()
只有每次去new创建这个sock对象,因为只有sock对象创建好了才由输入输出流
目前的实现方式就是,
1.在原有的基础上,再开多一个线程,专门负责发送心跳,
2.先睡眠500毫秒,
3.用socket.sendUrgentData(FF),给服务端,
4.如果服务端异常关闭的话,我就捕捉这个异常。。。
5.循环
心跳的意思就是每隔一段时间,客户端给服务器发一段消息:
1、客户端:服务器,我还活着,你死了没
2、服务器:客户端,我知道你还活着这个信息,我已经记录下来了,同时告诉你我也还活着
更多问题到问题求助专区http://bbs.houdunwang.com/
所谓长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。长连接多用于 *** 作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个 *** 作都是先连接,再 *** 作的话那么处理速度会降低很多,所以每个 *** 作完后都不断开,下次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,而且频繁的socket
创建也是对资源的浪费。
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁 *** 作情况下需用短连好。
总之,长连接和短连接的选择要视情况而定。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)