cvmclient.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 161 行

JAVA
161
字号
/* * Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER *  * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation.  *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt).  *  * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA  *  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions.  */import java.io.*;import java.net.*;public class cvmclient{    String hostname = "localhost";    int port = 4321;    Socket socket = null;    PrintWriter out = null;    BufferedReader in = null;    static int getInt(String token) throws NumberFormatException {        int result;	int radix = 10;        if (token.startsWith("0x")) {	    int index;	    index = token.indexOf('x');	    token = token.substring(index + 1);	    radix = 16;        }        result = Integer.parseInt(token, radix);	return result;    }    public void processArgs(String[] args) {	for (int i = 0; i < args.length; i++) {	    String arg = args[i];	    if (arg.equals("-host")) {		if (++i < args.length) {		    hostname = args[i];		} else {		    System.err.println("ERROR: missing host name or IP " +				       "address after -host");		}	    } else if (arg.equals("-port")) {		if (++i < args.length) {		    String portStr = args[i];		    try {			port = getInt(portStr);		    } catch (NumberFormatException e) {			System.err.println("ERROR: Invalid port number: " +					   portStr);		    }		} else {		    System.err.println("ERROR: missing port number " +				       "after -port");		}	    }	}    }    public void connectSocket() {	//Create socket connection	System.out.println("Connecting to " + hostname + ":" + port);	try{	    socket = new Socket(hostname, port);	    out = new PrintWriter(socket.getOutputStream(), true);	    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));	} catch (UnknownHostException e) {	    System.out.println("Unknown host: " + hostname);	    System.exit(1);	} catch  (IOException e) {	    System.out.println("Unable to open connection to host " + hostname +			       " on port " + port + ".");	    System.out.println("Check host, port number, and also if the " +			       "cvmsh server has been started yet.");	    System.exit(1);	}	System.out.println("Connected successfully");    }    public void runShell() {        InputStreamReader in = new InputStreamReader(System.in);        int numberOfChars;	char[] buf = new char[1000];	try {	    boolean done = false;	    final char CR = (char)0xD;	    final char LF = (char)0xA;	    while (!done) {		String input;		System.out.print("cvmsh> ");		numberOfChars = in.read(buf, 0, buf.length);		// First strip off the LF character if present: */		if ((numberOfChars > 0) && (buf[numberOfChars - 1] == LF)) {		    numberOfChars--;		}		// Next, strip off the CR character if present: */		if ((numberOfChars > 0) && (buf[numberOfChars - 1] == CR)) {		    numberOfChars--;		}		input = new String(buf, 0, numberOfChars);		//System.out.println("INPUT: length " + input.length() +		//		   " value \"" + input + "\"");		if (input.equals("quit!")) {		    // Make sure we are exiting the VM.		    input = "quit!";		} else if (input.startsWith("quit")) {		    // Make sure we are exiting the VM.		    input = "quit";		} else if (input.startsWith("detach")) {		    // Make sure we are exiting the VM.		    input = "detach";		} 		// Send to the server.		out.println(input);		// If any of the following options were sent to the server,		// then we need to shutdown because the server is no longer		// available.  The only exception is "detach" where we're		// voluntarily detaching from the server and shutting down.		if (input.equals("quit") ||		    input.equals("quit!") ||		    input.equals("detach") ||		    input.equals("stopServer")) {		    done = true;		}	    }	} catch (Throwable e) {	    System.err.println("ERROR: " + e);	}    }    public static void main(String[] args) {	cvmclient sh = new cvmclient();	sh.processArgs(args);	sh.connectSocket();	sh.runShell();    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?