q502691450 2014-05-26 05:29 采纳率: 0%
浏览 7134

netty长连接服务器断开后,客户端如何重新连接

private final static Logger logger = LoggerFactory.getLogger(ResourceStatusReceiver.class);

private static Bootstrap b = new Bootstrap(); 


public static void start() throws Exception { 


    EventLoopGroup workerGroup = new NioEventLoopGroup(); 


    try { 

// b = new Bootstrap(); // (1)
b.group(workerGroup); // (2)
b.channel(NioSocketChannel.class); // (3)
b.option(ChannelOption.SO_KEEPALIVE, true); // (4)
b.option(ChannelOption.ALLOW_HALF_CLOSURE,true);

        b.handler(new ChannelInitializer<SocketChannel>() { 


            @Override 
            protected void initChannel(SocketChannel ch) throws Exception { 


                ChannelPipeline pipeline = ch.pipeline(); 


                // 以("\n")为结尾分割的 解码器 
                pipeline.addLast("framer", new DelimiterBasedFrameDecoder(Integer.MAX_VALUE, Delimiters.lineDelimiter())); 


                // 字符串解码 和 编码 
                pipeline.addLast("decoder", new StringDecoder()); 
                pipeline.addLast("encoder", new StringEncoder()); 


                // 自己的逻辑Handler 
                pipeline.addLast("handler", new SimpleChannelInboundHandler() { 


                    @Override 
                    protected void channelRead0(ChannelHandlerContext channelHandlerContext, Object o) throws Exception { 


                        logger.debug("接收到的状态内容:" + o.toString()); 



                    } 

                    @Override 
                    public void channelRegistered(ChannelHandlerContext ctx) throws Exception { 


                        logger.debug("连接成功"); 
                    } 


                    @Override 
                    public void channelUnregistered(ChannelHandlerContext ctx) throws Exception { 



                    } 


                    @Override 
                    public void channelActive(ChannelHandlerContext ctx) throws Exception { 


                        logger.debug("======channelActive========"); 
                    } 


                    @Override 
                    public void channelInactive(ChannelHandlerContext ctx) throws Exception { 


                        logger.debug("======channelInactive========"); 
                    } 


                    @Override 
                    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { 
                        logger.debug("======exceptionCaught========"+cause.getMessage());                         

                    } 
                }); 

            } 
        }); 
        // Start the client. 
        ChannelFuture f = b.connect("127.0.0.1",8060).sync(); // (5) 
        // Wait until the connection is closed. 
        f.channel().closeFuture().sync(); 
    }finally{ 
            workerGroup.shutdownGracefully(); 
    } 
} 
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-27 15:53
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog