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

📄 nbtimeserver.java

📁 jdk 6.0的api文档...很难找到哦
💻 JAVA
字号:
/* * @(#)NBTimeServer.java	1.4 01/12/13 * A non blocking Internet time server implemented using * the New I/O (NIO) facilities added to J2SE v 1.4. * * Copyright 2001-2002 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 reproduct 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 AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY  * DAMAGES OR LIABILITIES  SUFFERED BY LICENSEE AS A RESULT OF  OR  * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE 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 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.  */import java.io.*;import java.nio.*;import java.nio.channels.*;import java.nio.channels.spi.*;import java.net.*;import java.util.*;// Listen on a port for connections and write back the current time.public class NBTimeServer {    private static final int DEFAULT_TIME_PORT = 8900;    // Constructor with no arguments creates a time server on default port.    public NBTimeServer() throws Exception {	acceptConnections(this.DEFAULT_TIME_PORT);    }    // Constructor with port argument creates a time server on specified port.    public NBTimeServer(int port) throws Exception {	acceptConnections(port);    }    // Accept connections for current time. Lazy Exception thrown.    private static void acceptConnections(int port) throws Exception {	// Selector for incoming time requests	Selector acceptSelector = SelectorProvider.provider().openSelector();	// Create a new server socket and set to non blocking mode	ServerSocketChannel ssc = ServerSocketChannel.open();	ssc.configureBlocking(false);	// Bind the server socket to the local host and port	InetAddress lh = InetAddress.getLocalHost();	InetSocketAddress isa = new InetSocketAddress(lh, port);	ssc.socket().bind(isa);		// Register accepts on the server socket with the selector. This	// step tells the selector that the socket wants to be put on the	// ready list when accept operations occur, so allowing multiplexed	// non-blocking I/O to take place.	SelectionKey acceptKey = ssc.register(acceptSelector, 					      SelectionKey.OP_ACCEPT);		int keysAdded = 0;		// Here's where everything happens. The select method will	// return when any operations registered above have occurred, the	// thread has been interrupted, etc.	while ((keysAdded = acceptSelector.select()) > 0) {	    // Someone is ready for I/O, get the ready keys	    Set readyKeys = acceptSelector.selectedKeys();	    Iterator i = readyKeys.iterator();	    // Walk through the ready keys collection and process date requests.	    while (i.hasNext()) {		SelectionKey sk = (SelectionKey)i.next();		i.remove();		// The key indexes into the selector so you		// can retrieve the socket that's ready for I/O		ServerSocketChannel nextReady = 		    (ServerSocketChannel)sk.channel();		// Accept the date request and send back the date string		Socket s = nextReady.accept().socket();		// Write the current time to the socket                PrintWriter out = new PrintWriter(s.getOutputStream(), true);		Date now = new Date();		out.println(now);		out.close();	    }	}    }    // Entry point.    public static void main(String[] args) {	// Parse command line arguments and	// create a new time server (no arguments yet)	try {		NBTimeServer nbt = new NBTimeServer();	} catch(Exception e) {		e.printStackTrace();			}    }}

⌨️ 快捷键说明

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