当前位置: 首页 > 面试题库 >

在Java RMI中,客户端如何知道服务器已死?

龙昊焱
2023-03-14
问题内容

目前,我正在研究基于Java RMI构建的聊天服务器-
客户端程序。为了使客户端能够检测到其连接的服务器已失效,我只能想到两种可能的解决方案,但是在我的情况下,它们都无法很好地工作。
1.等到客户端需要调用服务器的某些方法后,这种方法无法正常工作,因为如果聊天客户端不调用服务器的任何方法,它将不会知道服务器已死,因此聊天客户端无法接收那时再没有任何新的聊天消息。
2.通过每隔几秒钟调用一次服务器的方法进行例行检查。但这会带来大量的开销。
在这种情况下,还有什么更好的方法吗?
非常感谢你。


问题答案:

因此,似乎没有人在回答这个问题。。。如果不与之互动,您怎么知道某物是否已经死亡?

在IRC中,服务器会定期对客户端执行ping操作,以检查它们是否仍在连接…您将Ping! Pong!在客户端窗口中看到,有时客户端会尝试发送一条消息,只是发现它没有连接。

如果您担心开销..只是不要经常这样做



 类似资料:
  • 我正在制作满足以下条件的Netty服务器: null 在我的情况下,既没有发生“通道不活动”事件,也没有发生“连接被对等方重置”异常。 这是我使用的Netty测试客户端代码的部分。 如何在要回复时注意到断开连接?

  • 客户端连接到服务器,并使用头发送请求。服务器响应还包含header。 现在客户断电了。TCP或HTTP堆栈中是否有任何机制(如ping)告诉服务器客户端不在那里(除了超时)?

  • 我想用java写一个传输文件套接字程序。但我有问题,如何取消时传输文件。 当我在客户端关闭inputstream时,服务器如何知道它关闭了outputstream。 这是我的代码:客户 ...... 服务器 ...... 但当我关闭inputstream时没有显示任何内容

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 这一完整代码可从以下网址获得:https://github . com/Naresh-Chaurasia/API-micro services-Kafka/tree/master/micro services-CQRS-SAGA-Kafka/discovery service 我有以下Spring引导设置。 客户端/邮递员正在调用 API 网关(它也充当负载均衡器)。 API 网关和产品是 Spr

  • 我将创建一个身份验证服务器,它本身与一组不同的Oauth2.0服务器交互。Netty似乎是在这里实现网络部分的一个很好的候选者。但在开始之前,我需要澄清一些关于netty的细节,因为我是新手。例行程序如下: > < li> 服务器接受来自客户端的HTTPS连接。 然后,不关闭第一个连接,它通过HTTPS与远程OAuth2.0服务器建立另一个连接并获取数据 毕竟,服务器将结果发送回客户端,客户端应该