java如何实现客服端和服务端同步

来源:百度知道 编辑:UC知道 时间:2024/06/08 01:04:42
我用java写了个小程序,用到了socket编程和多线程,问题大概是:当启动服务端监听6543端口,没得到一个socket.accept().就产生一个子线程服务.用windows下的cmd命令进入DOS窗口,输入 telnet localhost 6543.如果我按照服务端已设的命令正常退出,下次重新telnet服务端仍然正常工作.但是如果我直接关闭DOS窗口,即在DOS窗口下操作服务端的过程中,我强制结束.问题出来:在次telnet登陆服务器,发现服务器仍然卡停在上次telnet结束的那段代码中.怎么保证我非正常退出DOS ,服务端的程序复位到启动状态,保证我在此登陆的时候好像刚启动一样?
不知道我的问题说明白了没?大概就是这样.保证我的临时socket关闭的时候,服务端能够复位,下一个子线程进来 正常工作
设置超时吗?超时的概念是从登陆开始计时还是从最后一次操作开始计时呀?如果是从登陆开始计时.运用就不太好.有没的别的好方法?判断客服端飞正常退出(直接X点,点关闭).

Socket socket = ss.accept();
socket.setSoTimeout(超时时间);
超时的时候会throws SocketException
你捕获这个异常,关闭socket

设定一个时间,在这个时间之内没有通讯,就认为是断线了。
网游都是采用这种机制的。QQ也是,QQ是每隔一段时间就会和客户端进行一次交互。这个时间你可以叫做“超时时间”