服务端代码
public class Server_Test {
public static void main (String[] args) {
int port = 8080 ;
if (args != null && args.length > 0 ) {
try {
port = Integer.valueOf(args[0 ]);
} catch (NumberFormatException e) {
port = 8080 ;
}
}
MultiplexerTimeServer timeServer = new MultiplexerTimeServer(port);
new Thread(timeServer,"NIO-MultiplexerTimeServer-001" ).start();
}
}
class MultiplexerTimeServer implements Runnable {
private Selector selector;
private ServerSocketChannel servChannel;
private volatile boolean stop;
public MultiplexerTimeServer (int port) {
try {
selector = Selector.open();
servChannel = ServerSocketChannel.open();
servChannel.configureBlocking(false );
servChannel.socket().bind(new InetSocketAddress(port), 1024 );
servChannel.register(selector, SelectionKey.OP_ACCEPT);
System.out .println("The server is start in port: " + port);
} catch (IOException e) {
e.printStackTrace();
System.exit(1 );
}
}
public void stop () {
this .stop = true ;
}
@Override
public void run () {
while (!stop) {
try {
selector.select (1000 );
Set<SelectionKey> selectionKeys = selector.selectedKeys();
Iterator<SelectionKey> it = selectionKeys.iterator();
SelectionKey key = null ;
while (it.hasNext()) {
key = it.next();
it.remove();
try {
handleInput(key);
} catch (IOException e) {
if (key !=