如何在从基于Netty的服务器连接到每个传入的客户端连接时发送消息?

时间:2013-07-08 12:55:41

标签: netty

代码段。

尝试向与服务器建立的连接写入hello。我假设一旦建立连接就调用channelActive并使用上下文来编写响应。但客户端没有收到任何信息。

public class EchoServerHandler extends ChannelInboundHandlerAdapter {
....
//edit checking status of future
public void channelActive(ChannelHandlerContext ctx) throws Exception {


    super.channelActive(ctx);
//    ChannelFuture f = ctx.write("hello"); //EDIT2  : cant use String use ByteBuf
        ByteBuf msg = Unpooled.copiedBuffer("hello", CharsetUtil.UTF_8);
    ctx.write(msg);
    if (f.isSuccess()) {
        System.out.println("success");
    }
    else {
        System.out.println("failed");
        f.cause().printStackTrace(); // EDIT2: Helpful in determining cause of failure

    }
    if (f.isDone()) {
        System.out.println("Done");
    }else
    {
        System.out.println("Not Done");
    }
    System.out.println("channelActive");
}    .....
}

1 个答案:

答案 0 :(得分:2)

你不能这样做。通道操作是异步的,除非isDone()返回true,否则isSucess()没有意义。阅读ChannelFuture的文档,如果操作确实失败,请写出失败的cause()