标签:
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();
}
}
}
标签:
原文地址:http://www.cnblogs.com/yunwuzhan/p/5493243.html