axserver.java
来自「java NIO源代码,初学者学习java NIO技术的基础代码」· Java 代码 · 共 57 行
JAVA
57 行
package org.Arios.XServer;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.util.Iterator;
public class AxServer implements Runnable{
private ServerSocketChannel serverChannel;
private Selector s;
private InetSocketAddress address;
private Thread serverThread;
private AxAcceptorManager manager = AxAcceptorManager.getInstance();
public AxServer(int port) {
address = new InetSocketAddress(port);
try {
s = Selector.open();
serverChannel = ServerSocketChannel.open();
serverChannel.socket().bind(address);
serverChannel.configureBlocking(false);
serverChannel.register(s, SelectionKey.OP_ACCEPT);
} catch (IOException e) {
e.printStackTrace();
}
}
public void start(){
serverThread = new Thread(this);
serverThread.start();
}
@Override
public void run() {
for(;;){
int i = 0 ;
try {
i = s.select();
if(i>0){
Iterator<SelectionKey> it = s.selectedKeys().iterator();
while(it.hasNext()){
SelectionKey key = it.next();
it.remove();
manager.start(key);
key.cancel();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?