uuuu


 @Override
    public void channelRead(final ChannelHandlerContext ctx, Object msg) throws IOException {

        ByteBuf byteBuf = (ByteBuf) msg;
        ByteBuf byteBuf1 = Unpooled.copiedBuffer(byteBuf);
        byte[] bytes = ByteBufUtil.getBytes(byteBuf1);
        boolean flag = byteBuf1.readBoolean();

        if (flag) {
            int str_length1 = byteBuf1.readInt();
            ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes, 5, str_length1);
            byte[] new_bytes = new byte[str_length1];
            while (inputStream.read(new_bytes) != -1) {
                inputStream.close();
                String plain = new String(new_bytes, CharsetUtil.UTF_8);
                if (plain.equalsIgnoreCase("PLAIN")) {
                    int aInt = byteBuf1.getInt(11);
                    String sql = parseBytesToString(byteBuf1, 11, aInt);
                    String[] split = sql.split("\u0000");
                    if (split.length==2){
                        String userName = split[0];
                        String passWord = split[1];
                        System.out.println("userName = "+ userName);
                        System.out.println("passWord = "+ passWord);
                    }
                }

            }
        }

        byteBuf1.resetReaderIndex();


//        byte[] bytes = ByteBufUtil.getBytes(byteBuf1);
        int size = byteBuf1.readInt();
        if (size>0 && byteBuf1.capacity()>=size){
            short unused = byteBuf1.readShort();
            short message_type = byteBuf1.readShort();


            int str_length = byteBuf1.readInt();

            ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes,12,str_length);
            byte[] new_bytes = new byte[str_length];
            while (inputStream.read(new_bytes)!=-1){
                inputStream.close();
                String statement = new String(new_bytes, CharsetUtil.UTF_8);
//                System.out.println(statement);
                if (statement.equalsIgnoreCase("ExecuteStatement")){
                    byte aByte = byteBuf1.getByte(95);
                    String sql = parseBytesToString(byteBuf1, 84, aByte);
                    System.out.println("sql ==== > " + sql);
                }
            }

        }


        if (outboundChannel.isActive()) {
            outboundChannel.writeAndFlush(msg).addListener(new ChannelFutureListener() {
                @Override
                public void operationComplete(ChannelFuture future) {
                    if (future.isSuccess()) {
                        // was able to flush out data, start to read the next chunk
                        ctx.channel().read();
                    } else {
                        future.channel().close();
                    }
                }
            });
        }
    }

你可能感兴趣的:(java)