packagecom.tz.simple.tcp;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.SelectionKey;importjava.nio.channels.Selector;importjava.nio.channels.SocketChannel;importjava.util.Iterator;importjava.util.Set;importcom.tz.uitl.Common;/*** 非阻塞式TCP时间服务器
* 同并发接收服务器数据
*
*@authorLJZ
**/publicclassTCPTimeClientextendsThread {privateintserverPort=8485;privateSocketChannel client=null;privateSelector readSelector=null;publicTCPTimeClient(intp)throwsIOException {
serverPort=p;
readSelector=Selector.open();
client=SocketChannel.open();
client.connect(newInetSocketAddress("192.168.100.38", serverPort));
client.configureBlocking(false);
client.register(readSelector, SelectionKey.OP_READ);
System.out.println("客户端 ["+client.socket().getLocalSocketAddress()+"] 启动, 连接服务器 ["+client.socket().getRemoteSocketAddress()+"]");
}publicvoidrun() {while(true) {try{intkeysReady=readSelector.select(100);if(keysReady>0) {
Set readyKeys=readSelector.selectedKeys();for(Iterator i=readyKeys.iterator(); i.hasNext();) {
i.next();
i.remove();intnbytes=-1;
ByteBuffer byteBuffer=ByteBuffer.allocate(1024);
nbytes=client.read(byteBuffer);if(nbytes>0) {
byteBuffer.flip();
System.out.println("收到服务器传来数据"+Common.decode(byteBuffer));
}
}
}
client.write(ByteBuffer.wrap("abcd".getBytes()));
}catch(Exception e) {
e.printStackTrace();
}finally{
}
}
}/***@paramargs*/publicstaticvoidmain(String[] args) {try{newTCPTimeClient(8485).start();
}catch(Exception e) {
e.printStackTrace();
}
}
}