01: //********* Non-blocking server *************************************** 02: 03: import java.nio.ByteBuffer; 04: import java.nio.channels.ServerSocketChannel; 05: import java.nio.channels.SocketChannel; 06: import java.net.InetSocketAddress; 07: 08: public class NBS { // NonBlockingServer 09: public static void main(String[ ] args) throws Exception { 10: // Store the message in a ByteBuffer for sending. 11: String msg = "Hello, world!"; 12: ByteBuffer buff = ByteBuffer.wrap(msg.getBytes()); 13: 14: // Open a non-blocking ServerSocketChannel. 15: ServerSocketChannel ssc = ServerSocketChannel.open(); 16: ssc.socket().bind(new InetSocketAddress(port)); 17: ssc.configureBlocking(false); 18: 19: // Await clients. 20: while (true) { 21: SocketChannel sc = ssc.accept(); // doesn't block 22: if (sc == null) 23: Thread.sleep(winks); // there's a better way 24: else { 25: buff.rewind(); // set position to 1st byte 26: while (buff.hasRemaining()) 27: sc.write(buff); // write the bytes 28: sc.close(); // close the connection 29: } 30: } 31: } 32: private static final int port = 2233; 33: private static final int winks = 2000; // 2 seconds 34: }