⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chargenserver.java

📁 本光盘包含了本书各章中出现的所有程序的源代码。 1. 如果是Java程序
💻 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 + -