📄 chargenserver.java
字号:
package Server;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.nio.channels.WritableByteChannel;
import java.util.Iterator;
import java.util.Set;
public class ChargenServer {
/**
* @param args
*/
public static int DEFAULT_PORT=19;
public static void main(String[] args) {
int port;
port=DEFAULT_PORT;
ByteBuffer staticBuffer = ByteBuffer.allocate(74);
ServerSocketChannel serverChannel;
Selector selector;
try {
serverChannel=ServerSocketChannel.open();
ServerSocket ss=serverChannel.socket();
InetSocketAddress address=new InetSocketAddress(port);
ss.bind(address);
serverChannel.configureBlocking(false);
selector=Selector.open();
serverChannel.register(selector, SelectionKey.OP_ACCEPT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
while(true){
try {
selector.select();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Set readyKeys=selector.selectedKeys();
Iterator iterator=readyKeys.iterator();
while(iterator.hasNext()){
SelectionKey key=(SelectionKey)iterator.next();
iterator.remove();
if(key.isAcceptable()){
ServerSocketChannel server=(ServerSocketChannel)key.channel();
SocketChannel client;
try {
client = server.accept();
System.out.println("Accepted connection from" + client);
client.configureBlocking(false);
SelectionKey key2=client.register(selector, SelectionKey.OP_READ);
ByteBuffer buffer=ByteBuffer.allocate(74);
buffer.flip();
key2.attach(buffer);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(key.isReadable()){
//System.out.println("aaaaaaaaaaaaaaaaaaaa write");
WritableByteChannel out=Channels.newChannel(System.out);
SocketChannel client=(SocketChannel)key.channel();
SocketChannel client1=(SocketChannel)key.channel();
ByteBuffer buffer=(ByteBuffer)key.attachment();
System.out.println(client.socket().getInetAddress());
try {
buffer.clear();
client.read(buffer);
buffer.flip();
client1.write(buffer);
//client.write(buffer);
} catch (IOException e) {
// TODO Auto-generated catch block
key.cancel();
try {
key.channel().close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
buffer.clear();
}
// if(key.isWritable()){
// //System.out.println("bbbbbbbbbbbbbbb write");
// SocketChannel client=(SocketChannel)key.channel();
// ByteBuffer buffer=(ByteBuffer)key.attachment();
// if(!buffer.hasRemaining()){
// buffer.rewind();
// int first=buffer.get();
// buffer.rewind();
// int position=first-' '+1;
// buffer.put(rotation,position,72);
// buffer.put((byte)'\r');
// buffer.put((byte)'\n');
// buffer.flip();
// }
// try {
// client.write(buffer);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// key.cancel();
// try {
// key.channel().close();
// } catch (IOException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
// }
// }
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -