【问题标题】:Netty server and client timeoutNetty 服务器和客户端超时
【发布时间】:2015-02-21 17:26:14
【问题描述】:

我想在服务器关闭时强制超时异常(网络中断)。

我试试这个配置:

pipeline.addLast("readTimeoutHandler", new ReadTimeoutHandler(5));
pipeline.addLast("writeTimeoutHandler", new WriteTimeoutHandler(5));
// Add the text line codec combination first,
pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));

// Add the encoder and decoder are static as these are sharable
pipeline.addLast("decoder", new StringDecoder());
pipeline.addLast("encoder", new StringEncoder());

// Enable stream compression
pipeline.addLast("deflater", new JZlibEncoder(ZlibWrapper.GZIP));
pipeline.addLast("inflater", new JZlibDecoder(ZlibWrapper.GZIP));

pipeline.addLast(clientHandler);

但是当我关闭 TCP 服务器时,客户端可以尝试使用channel.writeAndFlush(tempMsg + AbstractSocketInitializer.ESCAPE_CHAR); 发送消息

客户端从不抛出异常。

如何强制客户端在尝试写入频道但从未收到响应时抛出异常?

【问题讨论】:

    标签: java netty


    【解决方案1】:

    您可以查找channelInactive 事件并对其采取行动,即抛出异常或其他东西。在您的客户端的ChannelInboundHandlers 之一中覆盖以下方法:

      @Override
    public void channelInactive(final ChannelHandlerContext ctx) throws Exception {
      // do something here
    }
    

    该方法将在您关闭服务器后立即触发。

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多