如何立即从客户端读取数据?

时间:2015-04-21 08:27:06

标签: java netty

如何从服务器netty 4中的客户端获取数据。

在我向客户端发送数据的那一刻,客户端向我发送数据。但处理程序(方法channelRead())仅在服务器发送数据后才接收数据

我将在流程列表中显示的问题,我使用netty 4:

  1. 从客户端获取数据
  2. 开始计算回复
  3. 将一些服务数据发送到客户端(ctx.writeAndFlush())(确定)
  4. 继续计算回复
  5. 应该从客户端获取数据(这里有问题)
  6. 将计算出的响应发送给客户端(发送确定)。
  7. 我的代码: 处理

     @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    
            logger.debug("Start read handler " + ctx.channel().toString());
            ByteBuf b = (ByteBuf) msg;
         ctx.write(Unpooled.copiedBuffer( new Test.send(ctx,b) );
    }
    

    测试

     public class Test
     public byte[] send(ChannelHandlerContext ctx,ByteBuf b){
     // start calculates
     ctx.writeAndFlush(Unpooled.copiedBuffer(some data)); - its ok
    
     // calculates .. (during here i should get data from client but nothing   happens. Why does  the channel blocks  receiving data ? ) 
     return response;
    
    }
    

1 个答案:

答案 0 :(得分:2)

你应该有一个ChannelInboundHandler,一旦收到回复就会收到通知。请记住,netty中的所有内容都是非阻塞的。