qq_40772692
阿阿阿安
采纳率50%
2019-09-21 16:41

关于Netty4 的channelread的ByteBuf写回客户端信息的迷惑 。

关于Netty4 的channelread的ByteBuf写回客户端信息的迷惑

 @Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    ByteBuf buf = (ByteBuf) msg;

        ctx.writeAndFlush(buf);
 }

为什么在ServerHanlder的channelread方法里,这样直接把客户端发来的消息写回客户端,客户端收不到消息
而:

@Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        ByteBuf buf = (ByteBuf) msg;
        byte[] reg = new byte[buf.readableBytes()];
        buf.readBytes(reg);
        String body = new String(reg, "UTF-8");
        ByteBuf respByteBuf = Unpooled.copiedBuffer(body.getBytes());

        ctx.writeAndFlush(respByteBuf );
    }

这样转成字符串再转回来却能将客户端发来的消息写回去,客户端也能接收到。。小白很迷求解这样强制转换有什么不同吗,跪谢大佬!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • weixin_37893887 玄尺 2年前

    本质上ctx.writeAndFlush(buf);向客户端写数据,这两种方式本质上没什么不一样

    点赞 评论 复制链接分享

相关推荐