利用socket实现java程序自动关闭

今天发现一段有意思的程序,记录下来,娱乐自己.

1.实运行main方法时传两个参数   '应用命令'和'socket端口'

步骤1.启动java程序,参数(start 80890),启动serverSocket,启动线程,

步骤2.启动java程序,参数(shutdown 80890)启动socket客户端,推送字符串,服务端线程获取字符串,停止步骤2启动的程序,停止步骤1.启动的程序.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
 
import com.boco.vip.framework.util.common.CollectionUtil;
 
public class SocketUsing {
    private static void controlServer(String appCommant,int port){
        try{
            Socket clientSock = new Socket("127.0.0.1",port);//创建socket客户端(客户端依赖服务端,服务端没有启动报异常)
            if(appCommant.trim().toLowerCase().equals("shutdown")){//判断应用命令是否为shutdown
                //创建输出流
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(clientSock.getOutputStream()));
                bw.write("shutdown/n");//向服务端传送"shutdown"
                bw.flush();
                bw.close();
                clientSock.close();
                System.exit(0);
            }else{
                System.exit(0);
            }
        }catch(Exception e){
            if(appCommant.trim().toLowerCase().equals("shutdown")){
                System.exit(0);
            }else{
                try{
                    final ServerSocket ss = new ServerSocket(port);
                    //匿名类,创建线程
                    new Thread(new Runnable(){
                        public void run(){
                            while(true){
                                try{
                                    BufferedReader br = null;
                                    try{
                                        //创建输入流
                                        br = new BufferedReader(new InputStreamReader(ss.accept().getInputStream()));
                                        String command = br.readLine();
                                        if(CollectionUtil.checkStringEmpty(command)&&"shutdown".equals(command)){
                                            System.exit(0);
                                        }
                                    }catch(Exception eee){
                                         
                                    }
                                }catch(Exception e){
                                     
                                }
                            }
                        }
                    }).start();
                }catch(Exception ee){
                     
                }
            }
             
             
             
        }
    }
     
    public static void main(String[] args){
        controlServer(args[0],Integer.parseInt(args[1]));
    }
}

  

posted @   任满  阅读(1485)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
点击右上角即可分享
微信分享提示