0

我使用 Java 套接字开发了一个服务器/客户端应用程序。如此代码所示,我的服务器始终在运行。

while(SERVER_STATUT) //Server Statut is always true unless the client launches the stop script
    {
        try {

            Socket sockcli = sockserv.accept();


        } catch (IOException e) 
        {
            e.printStackTrace();
        }
    }

客户端与服务器交互并向服务器发送消息。我的问题是我想要使用脚本外壳启动和停止服务器。当客户端想要停止服务器时,他调用停止脚本。当服务器停止时,他可以通过调用启动脚本再次启动它。

启动和停止脚本存储在 .sh 文件中。

谢谢你

4

2 回答 2

1

你需要2个接口。
一个接口用于客户端连接到您的服务器,例如在端口8080
另一个是从您的用户接收停止,例如在端口8081
所以您停止脚本只会向端口中的服务器发送请求以8081停止您的服务器(本质上是更新SERVER_STATUT

于 2013-03-18T13:25:00.370 回答
0

我无法为您编写完整的工作代码,但我可以说出一些想法。

  • 如果有帮助,您可能想看看现有的东西。jboss/tomcat/apache...启动/停止脚本

  • 基本思想是,当你第一次start.sh执行时,脚本会创建一个 tmp 文件(例如)来存储 processId。如果此文件存在,则意味着您的服务器已经启动,如果用户多次启动,您可能会显示错误消息yourapp.pidstart.sh

  • 同样使用该 pid 文件,您可以获取服务器的 processId,并从您的 this 中将其终止(不是停止服务器的优雅方式),shutdown.sh这可能是 ashutdown.sh -fkillforce. 更好的方法是,您的服务器侦听特定端口以处理关闭。例如存储一些临时文件,或者根据您的逻辑需要进行一些预先停止处理。

  • 实际上,您只需要一个脚本,例如myConsle.sh,在这个单个文件中实现我上面所说的内容,并使用“ switch caselike”结构,这样您就可以:

myConsole.sh start|restart|stop|forcekill|status管理您的服务器。

希望能帮助到你

于 2013-03-18T13:31:41.633 回答