如何在connect上从基于Netty的服务器向每个输入客户端连接发送消息?

如何在connect上从基于Netty的服务器向每个输入客户端连接发送消息?,netty,Netty,代码片段 尝试向与服务器的连接写入hello。我假设一旦建立连接就调用channelActive,并使用上下文编写响应。但在客户端没有收到任何信息 public class EchoServerHandler extends ChannelInboundHandlerAdapter { .... //edit checking status of future public void channelActive(ChannelHandlerContext ctx) throws Exceptio

代码片段

尝试向与服务器的连接写入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");
}    .....
}

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

您使用的是什么netty版本?您是否尝试获取写入生成的通道未来并查看是否成功?使用netty-4.0.0.CR9 future失败并返回done。原因()为我指明了正确的方向。不能使用字符串对象进行写入。我必须使用一个ByteBuf ByteBuf msg=unmooled.copiedBuffer(“hello”,CharsetUtil.UTF_8);谢谢你的指点。使用EDIT2注释编辑代码并使测试正常运行。在修复之前,isDone为true,issucess为false。