package znio;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Date;
import java.util.Iterator;
import java.util.Set;
public class DataServer {
public static void main(String[] args) throws Exception {
int[] ports = {8001,8002,8003,8004,8005};
Selector selector = Selector.open();
for(int i=0; i<ports.length; i++){
ServerSocketChannel ssc = ServerSocketChannel.open();
ssc.configureBlocking(false);
ServerSocket ss = ssc.socket();
InetSocketAddress isa = new InetSocketAddress(ports[i]);
ss.bind(isa);
ssc.register(selector, SelectionKey.OP_ACCEPT);
System.out.println("服务器运行,在端口" + ports[i] + "上监听!");
}
int keysAdd = 0;
while((keysAdd = selector.select()) > 0){
Set<SelectionKey> selectedKeys = selector.selectedKeys();
Iterator<SelectionKey> iter = selectedKeys.iterator();
while(iter.hasNext()){
SelectionKey selectedKey = iter.next();
if(selectedKey.isAcceptable()){
ServerSocketChannel ssc = (ServerSocketChannel)selectedKey.channel();
SocketChannel sc = ssc.accept();
sc.configureBlocking(false);
ByteBuffer bb = ByteBuffer.allocate(1024);
bb.put(("server response time: " + new Date()).getBytes());
bb.flip();
sc.write(bb);
sc.close();
}
}
selectedKeys.clear();
}
}
}