1 public class AsynChronousSocketChannelRe implements Runnable,CompletionHandler<Void, 2 AsynChronousSocketChannelRe> { 3 private AsynchronousSocketChannel socketChannel; 4 private CountDownLatch latch; 5 private String host=null; 6 private int port ; 7 public AsynChronousSocketChannelRe(String host,int port){ 8 this.host=host; 9 this.port=port; 10 try{ 11 socketChannel=AsynchronousSocketChannel.open(); 12 }catch(IOException ex){ 13 14 } 15 } 16 public void run(){ 17 socketChannel.connect(new InetSocketAddress(host,port),this,this); 18 latch=new CountDownLatch(1); 19 try{ 20 latch.await(); 21 }catch(InterruptedException ex){ 22 23 }try{ 24 socketChannel.close(); 25 }catch(IOException ex){ 26 27 } 28 } 29 @Override 30 public void completed(Void result,AsynChronousSocketChannelRe attachment){ 31 byte[] bytes="QUERY TIME ORDER".getBytes(); 32 ByteBuffer readBuffer=ByteBuffer.allocate(bytes.length); 33 readBuffer.put(bytes); 34 readBuffer.flip(); 35 socketChannel.write(readBuffer, readBuffer, new CompletionHandler<Integer,ByteBuffer>(){ 36 @Override 37 public void completed(Integer result,ByteBuffer readBuffers){ 38 if(readBuffers.hasRemaining()){ 39 socketChannel.write(readBuffers, readBuffers,this); 40 } 41 else{ 42 ByteBuffer buffer=ByteBuffer.allocate(1024); 43 socketChannel.read(buffer, buffer, new CompletionHandler<Integer,ByteBuffer>(){ 44 @Override 45 public void completed(Integer result,ByteBuffer readbuffer){ 46 readbuffer.flip(); 47 byte[] bytes=new byte[readbuffer.remaining()]; 48 readbuffer.get(bytes); 49 String body; 50 try{ 51 body=new String(bytes,"UTF-8"); 52 System.out.println("Now is :"+body); 53 latch.countDown(); 54 }catch(IOException ex){ 55 56 } 57 } 58 @Override 59 public void failed(Throwable ex,ByteBuffer readbuffer){ 60 try{ 61 socketChannel.close(); 62 latch.countDown(); 63 }catch(IOException exc){ 64 65 } 66 } 67 }); 68 69 } 70 } 71 @Override 72 public void failed(Throwable exc,ByteBuffer readBuffers){ 73 try{ 74 socketChannel.close(); 75 latch.countDown(); 76 }catch(IOException ex){ 77 78 } 79 } 80 }); 81 82 } 83 @Override 84 public void failed(Throwable ex,AsynChronousSocketChannelRe attachment){ 85 try{ 86 latch.countDown(); 87 socketChannel.close(); 88 }catch(IOException exc){ 89 90 } 91 92 } 93 }