package example; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; class PingPongClientHandler extends ChannelInboundHandlerAdapter { final int M = 1000, N = 10000; long start = System.currentTimeMillis(); int i = M, j = N; @Override public void channelActive (ChannelHandlerContext ctx) { ctx.writeAndFlush ("Hello World.\n"); j--; } @Override public void channelRead (ChannelHandlerContext ctx, Object msg) { ctx.write ("Hello World.\n"); j--; if (j == 0) { long end = System.currentTimeMillis(); double ms = (double)(end - start) / (double)(N); double qps = 1.0 / ms * 1000.0; System.out.println (String.format ("%d trials: %10.3f ms, %10.0f rps", N, ms, qps)); j = N; i--; if (i == 0) ctx.close(); } } @Override public void channelReadComplete(ChannelHandlerContext ctx) throws Exception { ctx.flush(); } @Override public void exceptionCaught (ChannelHandlerContext ctx, Throwable cause) { cause.printStackTrace(); ctx.close(); } }