我拥有的是一个监听客户端的多线程套接字服务器。为打开的连接创建并启动新线程。客户端可以通过 Runtime .exec() 方法请求服务器执行一些命令。接收到的任何新命令都由新线程处理(将 PrintWriter 作为参数传递),并且所有输出(std/err)都通过带有 PrintWriter 的套接字发送。
问题是当命令需要更长的时间(即守护程序)并且客户端由于任何原因断开连接时,我无法再获得输出。我需要找到一种从另一个连接上的命令执行线程获取输出的方法(新的客户端会话将在另一个线程上)。
我可以尝试将命令的所有输出发送到 System.out 并尝试使用 PrintWriter 通过套接字发送它(System.out)(我不知道该怎么做)。如果我成功了,也许有一种方法可以将所有这样的输出发送到每个连接的客户端。
但是,我将所有输出保存到数据库中,如果连接了多个客户端,我最终会在我的数据库中有多个输入。
请给我一些想法,让我知道如何解决这个问题。谢谢