java swing:在服务器重启或关闭时通知客户端

时间:2012-04-11 11:08:29

标签: java client-server

背景

我编写了一个基于java swing的客户端服务器应用程序。服务器是一个弹簧容器,有一堆服务。服务器 - 客户端通过套接字通过序列化对象进行通信。服务器为每个客户端会话生成一个新线程,并在通信期间维护会话映射。

我正在向JVM添加一个关闭钩子

在我的GUI中,我有一个“停止服务器”按钮,用于删除用户会话并清理。

问题:这一切都运行正常,但现在我想让客户知道服务器是重启还是停止。关于如何解决这个问题的任何想法?

感谢。

2 个答案:

答案 0 :(得分:1)

您可能有一种方法可以从服务器接收回复。让该方法在一个单独的线程中运行,并永久地在一个循环中等待来自服务器的消息。当服务器停止时,连接将关闭,接收方法将获得异常。

答案 1 :(得分:1)

Alexei所述,您可以等待客户端抛出异常,并自动说出是因为服务器正在关闭或已停止。但是,这可能不是最佳方式,除非您确定这将是您的服务器唯一的错误。

我建议使用向所有客户端发送某些消息,告诉客户端服务器是故意停止的。当客户端收到该特定消息时,他们可以关闭其套接字。请参阅Sun的Knock Knock Server

示例