`
pangxin12345
  • 浏览: 185934 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA nio 学习笔记

阅读更多

闲着没事学习了一下nio 其中的内容还挺多。

总结:

1、开selector

2、开通道->设置非阻塞

3、实例化地址

4、得socket

5、socket绑定地址

6、监听注册

------------------------------------------------无敌分割

7、获得select

8、获得所有的key

9、获得服务器通道

10、获得客户端通道

11、实例化buffer

12、filp

13、写

14、关client通道

15、消key

 

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 NioServer {

	public static void main(String[] args) throws Exception{
		int posts[] = {8000,8001,8002,8003,8005,8006};
		Selector selector = Selector.open();
		for(int i = 0;i<posts.length;i++){
			ServerSocketChannel ss = ServerSocketChannel.open();
			ss.configureBlocking(false);
			InetSocketAddress isa = new InetSocketAddress(posts[i]);
			ServerSocket socket= ss.socket();
			socket.bind(isa);
			ss.register(selector, SelectionKey.OP_ACCEPT);
			System.out.println("123");
		}
		
		while (selector.select()>0) {
			Set<SelectionKey> setKey = selector.selectedKeys();
			Iterator<SelectionKey> itkey = setKey.iterator();
			while (itkey.hasNext()) {
				SelectionKey key = itkey.next() ;
				if(key.isAcceptable()){
					ServerSocketChannel dossc = (ServerSocketChannel) key.channel();
					SocketChannel clientChannel = dossc.accept();
					clientChannel.configureBlocking(false);
					ByteBuffer buffer = ByteBuffer.allocateDirect(1024);
					buffer.put(("时间是"+new Date().toString()).getBytes());
					buffer.flip();
					clientChannel.write(buffer);
					clientChannel.close() ;	// 关闭
//					dossc.configureBlocking(false);
				}
			}
			setKey.clear();
			 
		}
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics