JAVA nio 学习笔记

13 篇文章 0 订阅

闲着没事学习了一下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();
			 
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值