看动画,学JavaNIO教程23:如何将 Channel 注册到 Selector?
当我们创建好 Selector 以后
就可以将 Channel 注册到里面去
当然了
也不是所有 Channel 都可以注册的
只有 SelectableChannel 旗下的成员才可以
例如
DatagramChannel、SocketChannel 和 ServerSocketChannel
这三个是最常用的
注册需要用到 SelectableChannel 里的 register 方法
【注】请观看视频查看具体内容
package main;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.*;
import java.util.Set;
/**
* @author 【看动画,学Java】https://student-api.iyincaishijiao.com/t/Nqrff3f/
* @author 【官方网站】gorhaf.com
* @author 【微信公众号】gorhaf
* @author 【个人微信号】gorhafapp
* @author 【抖音】人人都是程序员
* @author 【B站】人人都是程序员
*/
public class Server {
public static void main(String[] args) {
try {
// 创建通道选择器
Selector selector = Selector.open();
// 创建服务端套字节通道
ServerSocketChannel server = ServerSocketChannel.open();
// 绑定监听端口号
server.bind(new InetSocketAddress(8080));
// 将服务端套字节通道注册到选择器里
server.register(selector, SelectionKey.OP_ACCEPT);
} catch (IOException e) {
e.printStackTrace();
}
}
}