java nio

server:

package com.zyw.javaio.test;

import java.io.IOException;
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.Iterator;
import java.util.Set;

public class Server3 {
	public static void main(String[] args) {
		try {
			//return new Selector
			Selector selector=Selector.open();
			//return ssc
			ServerSocketChannel ssc=ServerSocketChannel.open();
			ssc.configureBlocking(false);
			ServerSocket ss=ssc.socket();
			ss.bind(new InetSocketAddress(8888));
			ssc.register(selector, SelectionKey.OP_ACCEPT);
			ServerSocketChannel ssc1=ServerSocketChannel.open();
			ssc1.configureBlocking(false);
			ServerSocket ss1=ssc1.socket();
			ss1.bind(new InetSocketAddress(9999));
			// SelectionKey mark this SSC.
			ssc1.register(selector, SelectionKey.OP_ACCEPT);
			while (true){
				int caseNum=selector.select();
				if (caseNum==0){continue;}
				//we case thing is hanppening
				Set<SelectionKey> keys=selector.selectedKeys();
				Iterator it=keys.iterator();
				while (it.hasNext()){
					SelectionKey sk=(SelectionKey) it.next();

					if (sk.isAcceptable()){
						// dont worry  about accept  blocking.
						ServerSocketChannel sl=(ServerSocketChannel) sk.channel();
						SocketChannel sc1=sl.accept();
						sc1.configureBlocking(false);
						//now newconnect can read.
						SelectionKey newKey = sc1.register( selector, SelectionKey.OP_READ );
						System.out.println(sk+"can read");
						it.remove();		
					}else if(sk.isReadable()){
						SocketChannel sl=(SocketChannel) sk.channel();
						 ByteBuffer buffer=ByteBuffer.allocate(1024);    
		                    try{    
		                    sl.read(buffer);    
		                    }    
		                    catch(Exception ex){    
		                        sl.close();    
		                    }    
		                    System.out.println(new String(buffer.array()));    		                    
					}
				}
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

client:

package com.zyw.javaio.test;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

	public static void main(String[] args) {
		try {
			Socket sc=new Socket("127.0.0.1",9999);
			OutputStream out=sc.getOutputStream();
			out.write("hello server!!! I want to connect.".getBytes());
			out.flush();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch blockG
			e.printStackTrace();
		}
	}

}

  

posted @ 2016-05-14 20:15  不被女生喜欢好多年  阅读(211)  评论(0编辑  收藏  举报