【问题标题】:Exiting of one program, not more退出一个程序,而不是更多
【发布时间】:2018-07-28 15:28:22
【问题描述】:

所以基本上我是在 java 中做一个服务器和客户端。

为了让它运行,我必须同时运行 client.javaserver.java。我需要根据实例关闭一个或两个

我目前需要的是一种方法,当客户端传递参数 x 时,客户端应该关闭但服务器应该保持打开状态。我还必须以这样的方式实现它,如果客户端传递参数 y,客户端和服务器都应该关闭

我想过做:

System.exit(0);

但我不确定这是否会关闭服务器和客户端,这意味着它对第二个实例很有用。我也想过让它到达程序的末尾,但我不确定结果会是什么。

【问题讨论】:

  • 这个问题相当模糊。对于客户端服务器连接,当客户端关闭时,理想情况下它会终止与服务器的连接,然后自行关闭。服务器程序不应受到客户端有意或无意关闭的影响。鉴于这些应该是单独的 Java 程序。
  • 如果客户端和服务器在各自的 JVM 中运行,那么在其中一个使用 System.exit(0) 不会阻止另一个

标签: java networking


【解决方案1】:

如果您希望服务器继续侦听更多握手请求(即使之前的连接终止),您需要一个多客户端服务器。可以处理多个客户端的服务器通常会运行一个线程,该线程会不断循环并监听想要连接的客户端。这样的线程会为每个连接生成一个新线程并将其存储在一个线程数组中,这些线程都一直在与每个客户端进行侦听或交谈。

您可以了解更多关于多个客户端服务器here

通过监听所有客户端的线程数组,您可以指定一个条件来终止服务器中的所有线程和连接。这可能是一个字符串,其中一个客户端可以中继到服务器,例如“/exit”,服务器可以检查任何客户端线程发送的信息是否为“/exit”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2023-04-07
    相关资源
    最近更新 更多