是不是从服务端定时发信息给客户端的?
然后判断客户端在线??
而在客户端来说,就没有心跳包这个概念??
在客户端上面来看,怎么判断服务端是否异常关闭,或者开启??
目前的话,我是用sendUrgentData这个来判断服务端是否异常关闭,
不知道你们是怎么判断服务端异常关闭的??
还有怎么判断服务端是否开启??
我想实现自动连接服务端,如果用
socket = new Socket("192.168.1.4",1821);
socket.connect();
类似于这种方法的话,我知道是可以实现的,但是
new一个出来,感觉开销挺大,不知道各位有没有更加好的方法??
7 个解决方案
#1
要想自动连接你只有每次去new创建这个sock对象,因为只有sock对象创建好了才由输入输出流
#2
#3
心跳是客户端发给服务器端的,如果是服务器端发给客户端,客户端超过一定数值,服务器的端口不是都不够用?
在客户端上面来看,怎么判断服务端是否异常关闭,或者开启??
如果没有心跳,服务器肯定挂了:网络断了、服务器宕了
如果有心跳,并且可以连接到服务器的服务端口,说明网络和服务进程都没有问题
new一个出来,感觉开销挺大,不知道各位有没有更加好的方法??
new一个没什么开销,一般5s或者15s一次心跳,new和tcp建立的开销相对这点时间来说没什么,反正是后台工作,又不和用户交互,考虑这个开销你想多了
在客户端上面来看,怎么判断服务端是否异常关闭,或者开启??
如果没有心跳,服务器肯定挂了:网络断了、服务器宕了
如果有心跳,并且可以连接到服务器的服务端口,说明网络和服务进程都没有问题
new一个出来,感觉开销挺大,不知道各位有没有更加好的方法??
new一个没什么开销,一般5s或者15s一次心跳,new和tcp建立的开销相对这点时间来说没什么,反正是后台工作,又不和用户交互,考虑这个开销你想多了
#4
谢谢回复,本来有很多都半懂半不懂,被你这一说,学习了不少东西,哈哈。。。
还有那个,对于开销,看来真的是自己想多了。
最后我很奇怪 心跳 这个名词,
是不是就指定时发送些东西给服务端,那我目前的实现方式就是,
1.在原有的基础上,再开多一个线程,专门负责发送心跳,
2.先睡眠500毫秒,
3.用socket.sendUrgentData(FF),给服务端,
4.如果服务端异常关闭的话,我就捕捉这个异常。。。
5.循环
我这种算是完成了心跳的机制了吗??
是不是发送sendUrgentData(FF),这种方法来实现心跳机制的??
如果是你的话,你会通过发送什么去确认,服务端异常关闭了??
我觉得心跳这个机制好像很简单,但是好像又很难一样。。。
归根到底,都还不是很懂,求再次指导。。。
#5
哦哦哦,看来也只能是这样,然后还有个问题请教的:
我很奇怪 心跳 这个名词,
是不是就指定时发送些东西给服务端,我目前的实现方式就是,
1.在原有的基础上,再开多一个线程,专门负责发送心跳,
2.先睡眠500毫秒,Thread.sleep(500);
3.用socket.sendUrgentData(FF),给服务端,
4.如果服务端异常关闭的话,我就捕捉这个异常。。。
5.循环
我这种算是完成了心跳的机制了吗??
是不是发送 sendUrgentData(FF),这种方法来实现心跳机制的??
如果是你的话,你会通过发送什么去确认,服务端异常关闭了??
我觉得心跳这个机制好像很简单,但是好像又很难一样。。。
归根到底,都还不是很懂,求再次指导。。。
#6
心跳就是这样,其实就是利用了socket的超时机制,双方在超时时间内一直保持着通信,这就出现了所谓的长连接的概念
#7
心跳是客户端发给服务器端的,如果是服务器端发给客户端,客户端超过一定数值,服务器的端口不是都不够用?
在客户端上面来看,怎么判断服务端是否异常关闭,或者开启??
如果没有心跳,服务器肯定挂了:网络断了、服务器宕了
如果有心跳,并且可以连接到服务器的服务端口,说明网络和服务进程都没有问题
new一个出来,感觉开销挺大,不知道各位有没有更加好的方法??
new一个没什么开销,一般5s或者15s一次心跳,new和tcp建立的开销相对这点时间来说没什么,反正是后台工作,又不和用户交互,考虑这个开销你想多了
谢谢回复,本来有很多都半懂半不懂,被你这一说,学习了不少东西,哈哈。。。
还有那个,对于开销,看来真的是自己想多了。
最后我很奇怪 心跳 这个名词,
是不是就指定时发送些东西给服务端,那我目前的实现方式就是,
1.在原有的基础上,再开多一个线程,专门负责发送心跳,
2.先睡眠500毫秒,
3.用socket.sendUrgentData(FF),给服务端,
4.如果服务端异常关闭的话,我就捕捉这个异常。。。
5.循环
我这种算是完成了心跳的机制了吗??
是不是发送sendUrgentData(FF),这种方法来实现心跳机制的??
如果是你的话,你会通过发送什么去确认,服务端异常关闭了??
我觉得心跳这个机制好像很简单,但是好像又很难一样。。。
归根到底,都还不是很懂,求再次指导。。。
心跳的意思就是每隔一段时间,客户端给服务器发一段消息:
1、客户端:服务器,我还活着,你死了没
2、服务器:客户端,我知道你还活着这个信息,我已经记录下来了,同时告诉你我也还活着
具体应用场景太多了,你可以自己体会一下
#1
要想自动连接你只有每次去new创建这个sock对象,因为只有sock对象创建好了才由输入输出流
#2
#3
心跳是客户端发给服务器端的,如果是服务器端发给客户端,客户端超过一定数值,服务器的端口不是都不够用?
在客户端上面来看,怎么判断服务端是否异常关闭,或者开启??
如果没有心跳,服务器肯定挂了:网络断了、服务器宕了
如果有心跳,并且可以连接到服务器的服务端口,说明网络和服务进程都没有问题
new一个出来,感觉开销挺大,不知道各位有没有更加好的方法??
new一个没什么开销,一般5s或者15s一次心跳,new和tcp建立的开销相对这点时间来说没什么,反正是后台工作,又不和用户交互,考虑这个开销你想多了
在客户端上面来看,怎么判断服务端是否异常关闭,或者开启??
如果没有心跳,服务器肯定挂了:网络断了、服务器宕了
如果有心跳,并且可以连接到服务器的服务端口,说明网络和服务进程都没有问题
new一个出来,感觉开销挺大,不知道各位有没有更加好的方法??
new一个没什么开销,一般5s或者15s一次心跳,new和tcp建立的开销相对这点时间来说没什么,反正是后台工作,又不和用户交互,考虑这个开销你想多了
#4
心跳是客户端发给服务器端的,如果是服务器端发给客户端,客户端超过一定数值,服务器的端口不是都不够用?
在客户端上面来看,怎么判断服务端是否异常关闭,或者开启??
如果没有心跳,服务器肯定挂了:网络断了、服务器宕了
如果有心跳,并且可以连接到服务器的服务端口,说明网络和服务进程都没有问题
new一个出来,感觉开销挺大,不知道各位有没有更加好的方法??
new一个没什么开销,一般5s或者15s一次心跳,new和tcp建立的开销相对这点时间来说没什么,反正是后台工作,又不和用户交互,考虑这个开销你想多了
谢谢回复,本来有很多都半懂半不懂,被你这一说,学习了不少东西,哈哈。。。
还有那个,对于开销,看来真的是自己想多了。
最后我很奇怪 心跳 这个名词,
是不是就指定时发送些东西给服务端,那我目前的实现方式就是,
1.在原有的基础上,再开多一个线程,专门负责发送心跳,
2.先睡眠500毫秒,
3.用socket.sendUrgentData(FF),给服务端,
4.如果服务端异常关闭的话,我就捕捉这个异常。。。
5.循环
我这种算是完成了心跳的机制了吗??
是不是发送sendUrgentData(FF),这种方法来实现心跳机制的??
如果是你的话,你会通过发送什么去确认,服务端异常关闭了??
我觉得心跳这个机制好像很简单,但是好像又很难一样。。。
归根到底,都还不是很懂,求再次指导。。。
#5
要想自动连接你只有每次去new创建这个sock对象,因为只有sock对象创建好了才由输入输出流
哦哦哦,看来也只能是这样,然后还有个问题请教的:
我很奇怪 心跳 这个名词,
是不是就指定时发送些东西给服务端,我目前的实现方式就是,
1.在原有的基础上,再开多一个线程,专门负责发送心跳,
2.先睡眠500毫秒,Thread.sleep(500);
3.用socket.sendUrgentData(FF),给服务端,
4.如果服务端异常关闭的话,我就捕捉这个异常。。。
5.循环
我这种算是完成了心跳的机制了吗??
是不是发送 sendUrgentData(FF),这种方法来实现心跳机制的??
如果是你的话,你会通过发送什么去确认,服务端异常关闭了??
我觉得心跳这个机制好像很简单,但是好像又很难一样。。。
归根到底,都还不是很懂,求再次指导。。。
#6
要想自动连接你只有每次去new创建这个sock对象,因为只有sock对象创建好了才由输入输出流
哦哦哦,看来也只能是这样,然后还有个问题请教的:
我很奇怪 心跳 这个名词,
是不是就指定时发送些东西给服务端,我目前的实现方式就是,
1.在原有的基础上,再开多一个线程,专门负责发送心跳,
2.先睡眠500毫秒,Thread.sleep(500);
3.用socket.sendUrgentData(FF),给服务端,
4.如果服务端异常关闭的话,我就捕捉这个异常。。。
5.循环
我这种算是完成了心跳的机制了吗??
是不是发送 sendUrgentData(FF),这种方法来实现心跳机制的??
如果是你的话,你会通过发送什么去确认,服务端异常关闭了??
我觉得心跳这个机制好像很简单,但是好像又很难一样。。。
归根到底,都还不是很懂,求再次指导。。。
心跳就是这样,其实就是利用了socket的超时机制,双方在超时时间内一直保持着通信,这就出现了所谓的长连接的概念
#7
心跳是客户端发给服务器端的,如果是服务器端发给客户端,客户端超过一定数值,服务器的端口不是都不够用?
在客户端上面来看,怎么判断服务端是否异常关闭,或者开启??
如果没有心跳,服务器肯定挂了:网络断了、服务器宕了
如果有心跳,并且可以连接到服务器的服务端口,说明网络和服务进程都没有问题
new一个出来,感觉开销挺大,不知道各位有没有更加好的方法??
new一个没什么开销,一般5s或者15s一次心跳,new和tcp建立的开销相对这点时间来说没什么,反正是后台工作,又不和用户交互,考虑这个开销你想多了
谢谢回复,本来有很多都半懂半不懂,被你这一说,学习了不少东西,哈哈。。。
还有那个,对于开销,看来真的是自己想多了。
最后我很奇怪 心跳 这个名词,
是不是就指定时发送些东西给服务端,那我目前的实现方式就是,
1.在原有的基础上,再开多一个线程,专门负责发送心跳,
2.先睡眠500毫秒,
3.用socket.sendUrgentData(FF),给服务端,
4.如果服务端异常关闭的话,我就捕捉这个异常。。。
5.循环
我这种算是完成了心跳的机制了吗??
是不是发送sendUrgentData(FF),这种方法来实现心跳机制的??
如果是你的话,你会通过发送什么去确认,服务端异常关闭了??
我觉得心跳这个机制好像很简单,但是好像又很难一样。。。
归根到底,都还不是很懂,求再次指导。。。
心跳的意思就是每隔一段时间,客户端给服务器发一段消息:
1、客户端:服务器,我还活着,你死了没
2、服务器:客户端,我知道你还活着这个信息,我已经记录下来了,同时告诉你我也还活着
具体应用场景太多了,你可以自己体会一下