我已经使用netty IO编写了一个客户端 - 服务器程序,我可以在其中向服务器发送消息,服务器响应但不幸的是,我的Client Handler类中的任何侦听器方法都没有被调用,即...在客户端级别未收到响应。这是我的客户端用来向服务器发送请求消息的代码段。
ChannelFuture cf =this.ctx.channel().writeAndFlush(Unpooled.copiedBuffer(getEchoISOMessage(), CharsetUtil.ISO_8859_1));
this.ctx.writeAndFlush(Unpooled.EMPTY_BUFFER);
cf.awaitUninterruptibly();
if (!cf.isSuccess()) {
System.out.println("Send failed: " + cf.cause());
}
以下是用于从服务器接收任何响应消息的代码。
@Override
public void ChannelRead(ChannelHandlerContext ctx, ByteBuf in)
{
System.out.println("Received a response from Server..");
String responseMessage="";
responseMessage=in.toString(CharsetUtil.ISO_8859_1);
System.out.println("Received data as echo response"+responseMessage+"from "+ctx.channel().remoteAddress());
}
但是这个方法根本没有被调用。
答案 0 :(得分:0)
您的处理程序扩展了什么?如果要从服务器接收响应,它应该是入站处理程序。您确定您的代码是使用@Override
注释编译的吗? ChannelInboundHanlder
中的回调方法是public void void channelRead(ChannelHandlerContext ctx, Object msg)
。确保使用@Override
进行注释并确保代码编译。然后您的客户端将/应该从服务器接收响应。如果没有帮助,请考虑共享完整代码。