前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Netty断线重连

Netty断线重连

作者头像
JadePeng
发布于 2018-03-12 08:36:54
发布于 2018-03-12 08:36:54
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

Netty断线重连

最近使用Netty开发一个中转服务,需要一直保持与Server端的连接,网络中断后需要可以自动重连,查询官网资料,实现方案很简单,核心思想是在channelUnregistered钩子函数里执行重连。

创建连接

需要把configureBootstrap重构为一个函数,方便后续复用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 EventLoopGroup group = new NioEventLoopGroup(); 
    private volatile Bootstrap bootstrap; 
 
    public void init(String host, int port) throws RobotException { 
        this.serverIp  = host; 
        this.serverPort = port; 
        try { 
            // 创建并初始化 Netty 客户端 Bootstrap 对象 
            bootstrap = configureBootstrap(new Bootstrap(),group); 
            bootstrap.option(ChannelOption.TCP_NODELAY, true); 
            doConnect(bootstrap); 
        } 
        catch(Exception ex){ 
            ex.printStackTrace(); 
            throw new RobotException("connect remote control server error!",ex.getCause()); 
        } 
    } 
 
    Bootstrap configureBootstrap(Bootstrap b, EventLoopGroup g) { 
        b.group(g).channel(NioSocketChannel.class) 
                .remoteAddress(serverIp, serverPort) 
                .handler(new ChannelInitializer<SocketChannel>() { 
                    @Override 
                    public void initChannel(SocketChannel channel) throws Exception { 
                        ChannelPipeline pipeline = channel.pipeline(); 
                        // 编解码器 
                        pipeline.addLast(protoCodec); 
                        // 请求处理 
                        pipeline.addLast(RobotClient.this); 
                    } 
                }); 
 
        return b; 
    } 
 
    void doConnect(Bootstrap b) { 
        try { 
 
            ChannelFuture future = b.connect(); 
            future.addListener(new ChannelFutureListener() { 
                @Override 
                public void operationComplete(ChannelFuture future) throws Exception { 
                    if (future.isSuccess()) { 
                        System.out.println("Started Tcp Client: " + serverIp); 
                    } else { 
                        System.out.println("Started Tcp Client Failed: "); 
                    } 
                    if (future.cause() != null) { 
                        future.cause().printStackTrace(); 
                    } 
 
                } 
            }); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    }

断线重连

来看断线重连的关键代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@ChannelHandler.Sharable 
public class RobotClient extends SimpleChannelInboundHandler<RobotProto>  { 
    @Override 
    public void channelUnregistered(ChannelHandlerContext ctx) throws Exception { 
        // 状态重置 
        isConnected = false; 
        this.serverStatus = -1; 
 
        final EventLoop loop = ctx.channel().eventLoop(); 
        loop.schedule(new Runnable() { 
            @Override 
            public void run() { 
                doConnect(configureBootstrap(new Bootstrap(), loop)); 
            } 
        }, 1, TimeUnit.SECONDS); 
    } 
}
 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-06-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
小白音频测试之Python对音频进行频谱分析
初衷 语音识别领域对音频文件进行频谱分析是一项基本的数据处理过程,同时也为后续的特征分析准备数据。 前驱知识 Python需要使用的相关库 wave https://docs.python.org/3/library/wave.html pyaudio http://people.csail.mit.edu/hubert/pyaudio/ numpy https://www.runoob.com/numpy/numpy-tutorial.html pylab https://www.programcreek
Criss@陈磊
2020/06/16
5.7K0
利用Python进行录音和音频分析
Python有个很强大的处理音频的库pyqudio, 使用pyaudio库可以进行录音,播放,生成wav文件等等。更多介绍可以查阅官方文档。
林清猫耳
2018/12/14
5.1K0
利用Python进行录音和音频分析
语音信号处理教程(一)音频文件录制、导入、绘图
  这篇文章我们来看下如何用Matlab和Python产生录制音频、播放音频、导入音频文件,并查看音频文件的波形图。
猫叔Rex
2022/01/24
2.2K0
『开发技巧』Python音频操作工具PyAudio上手教程
当需要使用Python处理音频数据时,使用python读取与播放声音必不可少,下面介绍一个好用的处理音频PyAudio工具包。
小宋是呢
2019/06/27
5.2K1
『开发技巧』Python音频操作工具PyAudio上手教程
Python 播放音频与录音
os.system(file) 调用系统应用来打开文件,file 可为图片或者音频文件。
Python进阶者
2019/07/10
3.8K0
用Python播放和录制声音
Python语言已经无所不能了,今天就来分享一下,如何使用Python来录制和播放音频文件。
TalkPython
2019/05/24
7.3K0
使用PaddlePaddle轻松实现语音合成
使用PaddlePaddle轻松实现语音合成,提供了简单的示例代码,GUI界面操作,还有Flask的Web接口,可以给Android调用。
夜雨飘零
2022/09/07
1.3K0
使用PaddlePaddle轻松实现语音合成
python录音和播放
使用pip安装报错,尝试使用以上安装方法,安装成功,也可以使用,如果安装遇到问题,可以尝试参考中的文章提供有解决办法。
李小白是一只喵
2020/04/23
1.8K0
python录音和播放
音频处理入门:Python 库与工具使用指南
音频处理是数字媒体和人工智能领域中的一个重要分支,它涉及到音频的录制、播放、编辑和分析等多个方面。Python 作为一种强大的编程语言,提供了多种库和工具来帮助开发者进行音频处理。本文将介绍几个常用的 Python 音频处理库,并提供相应的使用示例,以帮助读者快速入门。
蚂蚁蚂蚁
2024/03/27
2.4K0
Python 播放声音 音频与beep
#import winsound #winsound.Beep(600,1000) import os os.system("paplay 1.wav") python使用pygame播放音乐. 链接地址:https://my.oschina.net/lenglingx/blog/183101 # -*- coding: cp936 -*- import pygame pygame.mixer.init() print("播放音乐1") track = pygame.mixer.music.load("t
py3study
2020/01/07
1.7K0
Python Audio 库 详解
Python 提供了一些强大的音频处理库,可以帮助开发者实现音频分析、编辑、合成、信号处理等功能。这些库能够支持各种音频文件格式,进行音频播放、录制、转换、效果处理、特征提取等操作。下面我们将介绍几个常用的 Python 音频库及其应用。
Michel_Rolle
2024/12/27
1.6K0
APP自动化效果测试工具
项目测试过程中经常需要在手机端体验语音产品的识别效果和稳定性,识别效果与手机硬件强相关无法抛开硬件影响。因此开发了一套基于uiautomator2+python UI自动化工具,可以实现在电脑端控制手机demo开始收音+播放待测音频+保存识别结果的APP自动化效果测试工具。
芯动大师
2022/11/15
1.1K0
APP自动化效果测试工具
手把手教你使用Python第三方库PyAudio打造一款录音工具
大家好,我是【🌑(这是月亮的背面)】。今天给大家分享Python使用PyAudio制作录音工具,文章目录如下: 应用平台 音频录制部分 音频播放部分 GUI窗口所需属性值代码部分 pynput监听键盘 总结 最近有在使用屏幕录制软件录制桌面,在用的过程中突发奇想,使用python能不能做屏幕录制工具,也锻炼下自己的动手能力。接下准备写使用python如何做屏幕录制工具的系列文章: 录制屏幕制作视频 录制音频 合成视频,音频 基于Pyqt5制作可视化窗口 大概上述四个部分,希望自己能够尽快完善,上一篇文章利用
Python进阶者
2022/01/13
2.9K0
手把手教你使用Python第三方库PyAudio打造一款录音工具
Python3+将2声道音频,分拆成1声
主要为了之后对两个音频的抵消与叠加进行处理做准备。 拆分后的音频,文件大小也只有原先的一半。
py3study
2020/01/03
1.2K0
python(实操4):录音文件的读取、
#!/usr/bin/python # encoding:utf-8 # Filename : processAudio.py # author by :morespeech # python2.7 # platform:visual studio code, windows # topic: practice every day # detial: process audio # !/usr/bin/env python # -*- coding:utf-8 -*- import os import
py3study
2020/01/08
8400
Python3+叠加两个音频文件,实现混
将两个单声道的音频文件叠加成一个新的音频文件。 实现:a + b = c(新) 同理,如果用 c - b 可以得到文件a 同理,也可以将多个单声道音频文件叠加到一起。
py3study
2020/01/06
1.5K0
[深度学习工具]·python音频常用的操作
链接:http://www.cnblogs.com/xingshansi/p/6799994.html
小宋是呢
2019/06/27
2.5K0
[深度学习工具]·python音频常用的操作
Python 之pyaudio使用随笔
https://people.csail.mit.edu/hubert/pyaudio/packages/
用户7789633
2020/09/22
2K0
Python 之pyaudio使用随笔
百度语音识别api使用python进行调用
百度语音现在是比较方便的接口,具体说明请看官方文档,本文分两个部分,先是使用python实现录音,然后再使用百度语音api进行识别上传。
十四君
2019/11/28
1.9K0
百度语音识别api使用python进行调用
语音信号处理教程(二)声音的声压级和响度
  首先来看声压级,这个就是指的我们平时所说的声音有多少分贝。声压定义为声波在某一点产生的逾量瞬时压强的均方根值。由于声压容易被人耳感知,也易于测量,因此,通常使用声压作为描述声波大小的物理量。
猫叔Rex
2021/02/26
7.9K0
语音信号处理教程(二)声音的声压级和响度
推荐阅读
相关推荐
小白音频测试之Python对音频进行频谱分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验