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