zoukankan      html  css  js  c++  java
  • 利用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]));
    	}
    }
    

      

  • 相关阅读:
    [Solution] DI原理解析及Castle、Unity框架使用
    [Solution] AOP原理解析及Castle、Autofac、Unity框架使用
    [C#] CSharp 基本语法
    [Architect] Abp 框架原理解析(5) UnitOfWork
    [Code] C#与js的正则表达式
    [SQL] SQL SERVER基础语法
    [Tool] PowerDesigner
    [JS] javascript基础语法
    SharedPreferences 的另一种场景的用法
    Eclipse 工程迁移到 Android Studio
  • 原文地址:https://www.cnblogs.com/rmsSpring/p/2944756.html
Copyright © 2011-2022 走看看