nio-选择器

package UDPDemo;

import java.net.InetSocketAddress;
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 DateServer {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		//表示5个监听端口
		int []ports = new int[]{8001,8002,8003,8004,8005,8006};
		//通过open方法找到selector
		Selector selector = Selector.open();
		for(int i=0;i0){
			//取出全部的键
			Set selectionKeys = selector.selectedKeys() ;
			Iterator iterator = selectionKeys.iterator();
			while(iterator.hasNext()){
				SelectionKey key = iterator.next();
				if(key.isAcceptable()){
					//
					ServerSocketChannel server = (ServerSocketChannel) key.channel();//取得对应的服务器通道
					//获取客户端
					SocketChannel client =  server.accept(); 
					//设置非阻塞
					client.configureBlocking(false);
					ByteBuffer  bf = ByteBuffer.allocate(1024);
					bf.put(("当前时间为:"+new Date()).getBytes());
					bf.flip();
					client.write(bf);
					client.close();
				}
			}
			selectionKeys.clear();
			
		}

	}

}

你可能感兴趣的:(deep-java)