⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.java

📁 jdk 6.0的api文档...很难找到哦
💻 JAVA
字号:
/* * Copyright 2004 Sun Microsystems, Inc. All  Rights Reserved. *   * Redistribution and use in source and binary forms, with or  * without modification, are permitted provided that the following  * conditions are met: *  * -Redistributions of source code must retain the above copyright   *  notice, this list of conditions and the following disclaimer. *  * -Redistribution in binary form must reproduce the above copyright  *  notice, this list of conditions and the following disclaimer in  *  the documentation and/or other materials provided with the  *  distribution. *   * Neither the name of Sun Microsystems, Inc. or the names of  * contributors may be used to endorse or promote products derived  * from this software without specific prior written permission. *  * This software is provided "AS IS," without a warranty of any * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF * THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. *   * You acknowledge that Software is not designed, licensed or  * intended for use in the design, construction, operation or  * maintenance of any nuclear facility. */package example.inetd;import java.io.IOException;import java.io.File;import java.io.FileOutputStream;import java.io.PrintStream;import java.rmi.Remote;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;/** * Used to launch a server from <code>inetd</code>.  The <code>main</code> * method of this server implementation exports the service object (an * instance of <code>ServiceInterface</code>) and then uses the utility * method <code>InitializeRegistry.initializeWithInheritedChannel</code> to * create and export a registry using an inherited channel (if any) and * to bind a name to the service proxy in that registry for clients to look * up. * * <p>This program, when configured to be started from <code>inetd</code>, * will start the server when a client attempts to look up the server by * name in the registry on the port configured with <code>inetd</code>. * * <p>To configure <code>inetd</code> to launch this program, the following * entry should be added to the configuration file * <code>/etc/inetd.conf</code>: * * <pre> *    example-server stream tcp wait nobody <b><i>jrehome</i></b>/bin/java \ *	  java -classpath <b><i>classpath</i></b> example.inetd.Server * </pre> * where <b><i>jrehome</i></b> is the path to the installed JRE, and  * <b><i>classpath</i></b> is the class path for the example. * * <p>Additionally, the <code>example-server</code> name needs to be * configured as a service in the <code>/etc/services</code> file as * follows: * * <pre> *    example-server    <b><i>port</i></b>/tcp * </pre> * where <b><i>port</i></b> is the port the registry will accept requests * on.  Note that the service name-- * here we used <code>example-server</code>-- can be another name, as long * as the chosen name it is not already configured in /etc/services. * * <p>This program also supports being run from the command line.  In this * case, there is no inherited channel, and the program will simply * create/export a remote service, create/export a registry on the port * number supplied as the command line argument, and then bind the * service's proxy in the registry for clients to look up. * <p>This program can be run from the command line as follows: * * <pre> *     java example.inetd.Server <b><i>port</i></b> * </pre> * where <b><i>port</i></b> is a nonzero port that the registry accepts * requests on. **/public class Server implements ServiceInterface {    public Server() {}    public String sendMessage(String message) {	System.out.println(message);	return "received message: " + message;    }    public static void main(String[] args) {	/*	 * Redirect System.err output to a file.	 */	redirectErrorOutput();		/*	 * Parse port argument.	 */	int port = 0;	if (args.length > 0) {	    try {		port = Integer.parseInt(args[0]);			    } catch (NumberFormatException e) {		goodbye("malformed port argument", e);	    }	}		/*	 * Create and export service, and then bind in local registry using 	 * inherited channel, if any.	 */	ServiceInterface server = new Server();	Remote proxy = null;	try {	    /*	     * Use two argument exportObject method to make sure that	     * dynamic proxy can be used.	     */	    proxy = UnicastRemoteObject.exportObject(server, 0);	    	} catch (RemoteException e) {	    goodbye("exception exporting service", e);	}		try {	    InitializeRegistry.initializeWithInheritedChannel(		proxy, "ServiceInterface", port);	    	} catch (IllegalArgumentException e) {	    goodbye("invalid port argument", e);	} catch (Exception e) {	    goodbye("exception occurred", e);	}	System.err.println("ready");		/*	 * Wait forever.	 */	try {	    Thread.sleep(Long.MAX_VALUE);	} catch (InterruptedException e) {	    throw new AssertionError(e);	}    }    /**     * Redirects System.err output to a file.     */    private static void redirectErrorOutput() {	try {	    File file = File.createTempFile("example-server-err", null, null);	    PrintStream errStream =		new PrintStream(new FileOutputStream(file));	    System.setErr(errStream);	    	} catch (IOException e) {	    goodbye("exception setting up error output file", e);	}    }        /**     * Prints message and exception, then exits.     */    private static void goodbye(String message, Exception e) {	System.err.println("Server: " + message + ": ");	e.printStackTrace();	System.exit(1);    }}

⌨️ 快捷键说明

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