Netty ChannelHandlerContext.write()不起作用

时间:2013-11-24 21:17:46

标签: c# netty

我正在编写一个Netty的服务器。很遗憾,write()writeAndFlush()方法对我不起作用。

我有一个扩展ChannelDuplexHandler的处理程序。它从C# client接收消息,打印它们并发回消息。客户端从未收到消息,因此我不知道他们是否真的被发送了。

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg)
{
    String input = msg.toString();
    System.out.println("Input = " + input); // This works fine
    ctx.writeAndFlush("Test");
    ctx.write("Test 1 2 3"); // This doesn't work.
}

这是我的管道:

public void initChannel(SocketChannel ch) throws Exception 
{
    ch.pipeline().addLast("idleStateHandler", ish);
    ch.pipeline().addLast("frameDecoder", new LineBasedFrameDecoder(maxIncMessageLength));
    ch.pipeline().addLast("stringDecoder", new StringDecoder(CharsetUtil.UTF_8));
    ch.pipeline().addLast("stringEncoder", new StringEncoder(CharsetUtil.UTF_8));
    ch.pipeline().addLast("myChannelDuplexHandler", gsh);
}

所以我的问题是,为什么write()不工作?感谢。

编辑:出于测试目的,我刚刚添加了

    final ChannelFuture f = ctx.writeAndFlush("Test"); 
    if(f.isDone())
        System.out.println("done!");
    if(f.isSuccess())
        System.out.println("real success!");
    f.addListener(new ChannelFutureListener() {
        @Override
        public void operationComplete(ChannelFuture future) {
            System.out.println("complete!");
        }
    }); 

输出结果为: 完成了! 真正的成功! 完成!

问题可能在客户端吗?

0 个答案:

没有答案