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 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘