001package runwar; 002 003import java.io.OutputStream; 004import java.net.InetAddress; 005import java.net.Socket; 006 007import runwar.options.CommandLineHandler; 008import runwar.options.ServerOptions; 009 010public class Stop { 011 012 public static void main(String[] args) throws Exception { 013 stopServer(args, true); 014 } 015 016 public static void stopServer(String[] args, boolean andExit) throws Exception { 017 ServerOptions serverOptions = CommandLineHandler.parseArguments(args); 018 int socketNumber = serverOptions.getSocketNumber(); 019 String host = serverOptions.getHost(); 020 char[] stoppassword = serverOptions.getStopPassword(); 021 try { 022 InetAddress addr = InetAddress.getByName(host); 023 Socket s = new Socket(addr, socketNumber); 024 OutputStream out = s.getOutputStream(); 025 System.out.println("*** sending stop request to socket : " + socketNumber); 026 for (int i = 0; i < stoppassword.length; i++) { 027 out.write(stoppassword[i]); 028 } 029 out.flush(); 030 out.close(); 031 s.close(); 032 if (!Server.serverWentDown(10000, 500, addr, socketNumber)) { 033 System.err 034 .println("Timeout stopping server. Did you set a stop-password, and are you passing it? Check the log for more information."); 035 System.exit(1); 036 } 037 } catch (Exception e) { 038 System.err 039 .println("Could not stop server. Are you sure it is running, and listing for stop requests on port " 040 + socketNumber + "?"); 041 System.exit(1); 042 } 043 System.out.println("*** stopped."); 044 System.out.println(Server.bar); 045 if (andExit) { 046 System.exit(0); 047 } 048 Thread.currentThread().interrupt(); 049 return; 050 } 051 052}