我使用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();
}
}
客户端与服务器交互并向服务器发送消息。 我的问题是我想要使用脚本shell启动和停止服务器。当客户端想要停止服务器时,他调用停止脚本。当服务器停止时,他可以通过调用启动脚本再次进行午餐。
启动和停止脚本存储在.sh文件中。
谢谢
答案 0 :(得分:1)
您需要2个接口
一个接口用于连接到服务器的客户端,例如在港口8080
中
另一种是从您的用户接收止损,例如在港口8081
中
因此,您停止脚本只会向端口8081
中的服务器发送请求以停止您的服务器(基本上更新SERVER_STATUT
)
答案 1 :(得分:0)
我无法为您编写完整的工作代码,但我可以说出一些想法。
如果有帮助的话,你可能想看看现有的东西。 jboss/tomcat/apache...
启动/停止脚本
基本思路是,当您的start.sh
首次执行 时,脚本会创建一个tmp文件(例如yourapp.pid
)来存储processId。如果此文件存在,则表示您的服务器已启动,如果用户多次启动start.sh
,您可能会显示错误消息
同样使用该pid文件,您可以获取服务器的processId,并从shutdown.sh
中删除它(不是优雅的方式来停止服务器),这可能是shutdown.sh -f
或killforce
。更好的方法是,您的服务器侦听特定端口,以处理关闭。例如存储一些临时文件,或根据您的逻辑需要进行一些预停止处理。
实际上你只需要一个脚本,比如myConsle.sh
,在这个单个文件中实现我上面所说的,并且使用“switch case
like”结构,这样你就可以:
myConsole.sh start|restart|stop|forcekill|status
来管理您的服务器。
希望有所帮助