当前位置: 首页 > 知识库问答 >
问题:

退出一个程序,而不是更多

仉昱
2023-03-14

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

为了让它运行,我必须同时运行client.java和server.java.我需要关闭一个或两个取决于实例

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

我想做:

System.exit(0);

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

共有1个答案

上官和惬
2023-03-14

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

您可以在此处了解有关多个客户端服务器的更多信息。

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

 类似资料:
  • 23.9 程序退出 每个SpringApplication都会向JVM注册一个关闭钩子,以确保在退出时ApplicationContext被正常关闭。所有标准的Spring的生命周期回调(如DisposableBean接口或@PreDestroy注解)都可以使用。 另外,如果希望bean在SpringApplication.exit()被调用时返回特定的退出码,那么bean可以实现org.spri

  • 问题内容: 我在询问用户名和密码时有一个小框。单击主窗口中的按钮将打开该框架。 然后,我有两个按钮:确定和取消。 当我单击“取消”按钮时,我需要关闭此框架而不退出应用程序。 我怎样才能做到这一点? 问题答案: 您可以使用Frame.hide()或Frame.dispose()。我还建议研究JDialog或JOptionPane 更正:hide()已过时。应该使用SetVisible(false)代

  • 问题内容: 我是Java的新手,所以我编写了这段代码,以便将这整个五年都称为布尔值,并为所有布尔值生成答案。但是,它仅调用最后一个。我该怎么做呢? 问题答案: 您每年需要使用单独的对象,或者至少在创建该年份的对象后立即调用the年检查方法。 您所拥有的是对函数的一系列调用,该函数将值分配给同一对象的属性。因此,只有最后一条语句才起作用,因为先前的值将被覆盖。 另外请注意,您的代码似乎没有正确组织。

  • 你的开发者必须力求在项目的公共论坛中以一个单独的参与者出现,而不是一个单独的公司。这不是因为作为一个公司出现本身固有的一些负面含义(好的,或许有一些,但那不是本书所讨论的)。而是因为开源项目的结构配备只能处理个人实体。一个单独的贡献者可以讨论、提交补丁、获取信誉、表决等等。而一个公司不能。 此外,因为分布式的行为方式,你避免了对于刺激性中央集权的敌对。让你的开发者在邮件列表中意见并不一致。鼓励他们

  • 问题内容: 我在Windows 7中使用命令提示符制作了一个可执行jar 创建了.jar文件。但是当我尝试打开它时,我会看到一个弹出窗口,其中显示 但是,当我使用 在命令提示符下,它可以正常工作。这是怎么回事?我希望能够双击它。 问题答案: 哈,我发现了问题所在。我使用jdk1.7编写了程序,但安装了jre6。我去升级到jre7,现在可以正常工作了:) 的 行在命令提示符下工作,因为我的Java路

  • 问题内容: 我的应用程序包含A,B和C这三个活动。我通过“确定”按钮从A移到B,并且我想使用Android设备的默认后退按钮从B移到A。但是,当我按下按钮时,整个应用程序将关闭。我该如何解决这个问题? 问题答案: 我怀疑您是通过“确定”按钮onclick监听器调用的。不要那样做 从活动堆栈中删除您的活动。 在这里阅读更多。