前言

今天涉及以下内容:

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长连接(四)——断开重连相关推荐

  1. Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败...

    2019独角兽企业重金招聘Python工程师标准>>> 错误原因如下: Exception in thread "main" org.hibernate.exce ...

  2. Java JDBC连接SQL Server2005错误:通过port 1433 连接到主机 localhost 的 TCP/IP 连接失败...

    错误原因例如以下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cann ...

  3. Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败(转载)...

    错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot ...

  4. java通过端口1433连接到主机_通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败.错误:"connect timed out.请验证连接属性.确保 ...

  5. 帆软连接mysql失败_帆软FineReport连接SQL Server数据库不成功:通过端口1433连接到主机localhost的 TCP/IP 连接失败...

    安装FineReport连接SQL Server数据库时,通过端口1433连接到本机一直失败,在FineReport官方网站帮助文档一直没找到解决办法.后在网上搜索了许久,终于找到问题所在" ...

  6. 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 错误 Connection refus

    错误描述 ERROR:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败.错误:"Connection refused: connect.请验证连接属性,并检查  ...

  7. 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。

    今天碰到一个问题,查了很久,报错如下: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败.错误:"Connection refused: connect.请验证 ...

  8. idea:通过端口 1433 连接到主机 1433 的 TCP/IP 连接失败

    问题描述: 刚开始学javaweb和sql语言,试着做一个简单的程序显示一下数据库中的数据,可是总是出错,错误是"com.microsoft.sqlserver.jdbc.SQLServer ...

  9. JDBC连接错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。。。

    com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败.错误:"Co ...

最新文章

  1. ubuntu vsftpd虚拟用户配置/ubuntu12.04上搭建vsftpd服务示例linux
  2. 项目开发涉及循坏的小思路
  3. python 默认配置文件_python各类配置文件写法
  4. 计算机算法设计与分析 最长子序列
  5. 利用 John the Ripper 破解用户登录密码
  6. SpringAOP和AspectJ
  7. 关于caffe-ssd训练时smooth_L1到底参与运算与否的问题
  8. 超级易懂的非递归实现二叉树三种遍历(与网上都不一样)
  9. PHP 与 Perl 语言对比
  10. 微信小程序长按识别二维码
  11. 非线性曲线拟合和多项式曲线拟合
  12. Java模拟Http请求封装工具类
  13. 8583报文MAC验证实现过程
  14. java解析shp文件以及坐标转换(工具类)
  15. 我的世界服务器怎么显示腐竹来了,我的世界服务器主人可用指令一览 我的世界腐竹常用指令介绍_游侠手游...
  16. hdu 4802 GPA
  17. 英酷词典 使用方法 必知必会
  18. 秦王扫六合,虎视何雄哉
  19. c语言表示三八译码器原理,单片机74HC138三八译码器的原理及应用方法
  20. JJJ-1 early_irq_init

热门文章

  1. LDA主题模型——gensim实战
  2. Hadoop 在关机重启后,namenode启动报错
  3. 怎么样设置关闭网页再次登录网页是正常登录状态_学籍系统出现“该账号已登录,不能重复登录”怎么办?...
  4. 【Cocosd2d实例教程六】Cocos2d实现屏幕背景的自动滚动
  5. How those spring enable annotations work--转
  6. Domain Driven Design and Development In Practice--转载
  7. 【模型开发】逐步回归
  8. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主
  9. 五、【线性表】线性表的链式表示和实现
  10. Redis进阶 -CLUSTER NODES 信息结合实际输出信息解读