java mina长连接短连接_MINA实现TCP长连接(四)——断开重连
前言
今天涉及以下内容:
mina官网及实现客户端需要的jar包
客户端实现重连接涉及到的几个类
重连接在Activity中的使用
效果图和项目结构图
重连接涉及到的类源码
先来波效果图
image.png
image.png
一.mina官网及实现客户端需要的jar包
mina是一个通讯长连接框架,其官网如下:
mina官网
利用mina实现tcp长连接客户端需要以下jar包:
mina-core-2.0.16.jar
slf4j-android-1.7.21.jar
slf4j-api-1.7.21.jar
下载地址:mina_tcp客户端jar.zip
大家将以上jar下载下来,然后导入到自己的项目中。
二.客户端实现重连接涉及到的几个类
客户端重连的话主要涉及两个类:
ClientReConnectListener:实现IoServiceListener接口,主要用于监听链接断开状态
TmClientManager:其中提供断开重连的具体逻辑
三.重连接在Activity中的使用
下面来看看TmClientManager,TmClientConfig等类在Activity中实现的断开重连通讯功能,下面贴出TempActivity代码:
/**
* Title:测试界面
* description:
* autor:pei
* created on 2020/6/2
*/
public class TempActivity extends AppCompatActivity implements View.OnClickListener{
private TextView mTv;
private Button mBtn1;
private Button mBtn2;
//声明tcp客户端操作对象和配置对象
private TmClientConfig mConfig;
private TmClientManager mTmClientManager;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_temp);
//初始化控件
initView();
//初始化数据
initData();
//设置监听
setListener();
}
/**初始化控件**/
private void initView(){
mTv=findViewById(R.id.tv);
mBtn1=findViewById(R.id.btn1);
mBtn2=findViewById(R.id.btn2);
}
/**初始化数据**/
private void initData() {
//初始化tcp配置
mConfig = new TmClientConfig.Builder(TempActivity.this)
.setIp("192.168.9.104")//设置服务端ip
.setPort(9124)//设置端口(0-65535)之间
// .setConnectTimeOut(30000)//设置连接超时时间,单位毫秒,默认30000,即30秒
// .setCharsetName("UTF-8")//设置字符集,默认为 “UTF-8”
// .setReadBufferSize(2048)//设置接收数据缓存区,默认2048
.setReconnect(true)//是否开启断开重连,默认false,即关闭
.setRcDelayTime(3000)//设置重连时间间隔,默认3秒(开启断开重连后生效)
//设置mina客户端接收数据监听
.setCmrListener(new TmClientHandler.OnMessageReceivedListener() {
@Override
public void messageReceived(IoSession session, Object message) {
//接收服务端消息
//......
LogUtil.i("======我是服务端返回消息==message=" + message.toString());
runOnUiThread(new Runnable() {
@Override
public void run() {
mTv.setText(message.toString());
}
});
}
}).build();
//初始化操作对象
mTmClientManager = new TmClientManager(mConfig);
}
/**设置监听**/
private void setListener(){
mBtn1.setOnClickListener(this);
mBtn2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1://测试1
LogUtil.i("=======测试====1===");
test();
break;
case R.id.btn2://测试2
String result="我是中国人啊你是谁,我是亚瑟,你知道么,大家好一切都号";
String result1="abc";
//给服务端发送消息
SessionManager.getInstance().writeToServer(result1);
break;
default:
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//断开连接
mTmClientManager.disConnect();
}
/**测试**/
private void test(){
ToastUtil.shortShow("准备连接啊");
new Thread(new Runnable() {
@Override
public void run() {
//连接服务端
mTmClientManager.connect();
}
}).start();
}
}
主要是
.setReconnect(true)//是否开启断开重连,默认false,即关闭
.setRcDelayTime(3000)//设置重连时间间隔,默认3秒(开启断开重连后生效)
两个参数设置实现断开重连机制。具体处理已经封装到TmClientManager类中了。
四.效果图和项目结构图
image.png
image.png
项目结构图如下:
image.png
五.重连接涉及到的类源码
下面贴出重连功能涉及到的两个主要类:ClientReConnectListener和TmClientManager,其他代码的话,大家可以参看我之前的文章。
ClientReConnectListener源码如下:
java mina长连接短连接_MINA实现TCP长连接(四)——断开重连相关推荐
- Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败...
2019独角兽企业重金招聘Python工程师标准>>> 错误原因如下: Exception in thread "main" org.hibernate.exce ...
- Java JDBC连接SQL Server2005错误:通过port 1433 连接到主机 localhost 的 TCP/IP 连接失败...
错误原因例如以下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cann ...
- Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败(转载)...
错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot ...
- java通过端口1433连接到主机_通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败.错误:"connect timed out.请验证连接属性.确保 ...
- 帆软连接mysql失败_帆软FineReport连接SQL Server数据库不成功:通过端口1433连接到主机localhost的 TCP/IP 连接失败...
安装FineReport连接SQL Server数据库时,通过端口1433连接到本机一直失败,在FineReport官方网站帮助文档一直没找到解决办法.后在网上搜索了许久,终于找到问题所在" ...
- 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 错误 Connection refus
错误描述 ERROR:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败.错误:"Connection refused: connect.请验证连接属性,并检查 ...
- 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。
今天碰到一个问题,查了很久,报错如下: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败.错误:"Connection refused: connect.请验证 ...
- idea:通过端口 1433 连接到主机 1433 的 TCP/IP 连接失败
问题描述: 刚开始学javaweb和sql语言,试着做一个简单的程序显示一下数据库中的数据,可是总是出错,错误是"com.microsoft.sqlserver.jdbc.SQLServer ...
- JDBC连接错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。。。
com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败.错误:"Co ...
最新文章
- ubuntu vsftpd虚拟用户配置/ubuntu12.04上搭建vsftpd服务示例linux
- 项目开发涉及循坏的小思路
- python 默认配置文件_python各类配置文件写法
- 计算机算法设计与分析 最长子序列
- 利用 John the Ripper 破解用户登录密码
- SpringAOP和AspectJ
- 关于caffe-ssd训练时smooth_L1到底参与运算与否的问题
- 超级易懂的非递归实现二叉树三种遍历(与网上都不一样)
- PHP 与 Perl 语言对比
- 微信小程序长按识别二维码
- 非线性曲线拟合和多项式曲线拟合
- Java模拟Http请求封装工具类
- 8583报文MAC验证实现过程
- java解析shp文件以及坐标转换(工具类)
- 我的世界服务器怎么显示腐竹来了,我的世界服务器主人可用指令一览 我的世界腐竹常用指令介绍_游侠手游...
- hdu 4802 GPA
- 英酷词典 使用方法 必知必会
- 秦王扫六合,虎视何雄哉
- c语言表示三八译码器原理,单片机74HC138三八译码器的原理及应用方法
- JJJ-1 early_irq_init
热门文章
- LDA主题模型——gensim实战
- Hadoop 在关机重启后,namenode启动报错
- 怎么样设置关闭网页再次登录网页是正常登录状态_学籍系统出现“该账号已登录,不能重复登录”怎么办?...
- 【Cocosd2d实例教程六】Cocos2d实现屏幕背景的自动滚动
- How those spring enable annotations work--转
- Domain Driven Design and Development In Practice--转载
- 【模型开发】逐步回归
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主
- 五、【线性表】线性表的链式表示和实现
- Redis进阶 -CLUSTER NODES 信息结合实际输出信息解读