gpt4 book ai didi

java - Java中如何检查服务器是否仍然与客户端连接?

转载 作者:行者123 更新时间:2023-12-01 11:58:20 25 4
gpt4 key购买 nike

我想在从流读取之前检查服务器是否仍然连接到客户端。在java中如何做到这一点?我当前的代码如下。这只会检查客户端套接字吗?

public void receiveResultFromServer() {
try {
while(!clientSocket.isClosed()) {
try{
Object obj = inStream.readObject();
if (obj instanceof Command) {
ConnectionManager.parseCommand((Command) obj);
} else if (obj instanceof CommandExecResult) {
ConnectionManager.parseCommandExecutionResult((CommandExecResult) obj);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
} catch(Exception e) {
e.printStackTrace();
}

最佳答案

在读取流之前了解连接性并不好。而是设计一个心跳机制。

算法:

a) 在客户端和服务器上使用枚举“SEND_BEAT”和“RECEIVE_BEAT”设计两个命令。

b) 现在,一旦服务器启动,就启动一个线程,使用命令从服务器到客户端(握手协议(protocol))发送信号,客户端将响应该信号到服务器.

c) 可以使用 Java Timer 和 TimerTask 类定期安排发送信号作业,例如

  scheduleAtFixedRate(new RunTimer(), 5000, 1000);

d) 根据响应,在服务器上维护客户端的状态。

e) 现在您可以使用状态来检查客户端和服务器之间的连接。

f) 事实上,您甚至可以设计一个重新连接机制,在最终更新之前会尝试一定次数。

h)您还需要根据需要将状态维护为检查点。

希望上述算法能够满足您的需求。

关于java - Java中如何检查服务器是否仍然与客户端连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28185933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com