Java tutorial
/* * Copyright (c) 2004 David Flanagan. All rights reserved. * This code is from the book Java Examples in a Nutshell, 3nd Edition. * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied. * You may study, use, and modify it for any non-commercial purpose, * including teaching and use in open-source projects. * You may distribute it non-commercially as long as you retain this notice. * For a commercial use license, or to purchase the book, * please visit http://www.davidflanagan.com/javaexamples3. */ //package je3.nio; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; /** * A simple TCP server for the daytime service. See RFC867 for details. This * implementation lacks meaningful exception handling and cannot handle UDP * connections. */ public class SimpleDaytimeServer { public static void main(String args[]) throws java.io.IOException { // RFC867 specifies port 13 for this service. On Unix platforms, // you need to be running as root to use that port, so we allow // this service to use other ports for testing. int port = 13; if (args.length > 0) port = Integer.parseInt(args[0]); // Create a channel to listen for connections on. ServerSocketChannel server = ServerSocketChannel.open(); // Bind the channel to a local port. Note that we do this by obtaining // the underlying java.net.ServerSocket and binding that socket. server.socket().bind(new InetSocketAddress(port)); // Get an encoder for converting strings to bytes CharsetEncoder encoder = Charset.forName("US-ASCII").newEncoder(); for (;;) { // Loop forever, processing client connections // Wait for a client to connect SocketChannel client = server.accept(); // Build response string, wrap, and encode to bytes String date = new java.util.Date().toString() + "\r\n"; ByteBuffer response = encoder.encode(CharBuffer.wrap(date)); // Send the response to the client and disconnect. client.write(response); client.close(); } } }