1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java mina长连接短连接_MINA实现TCP长连接(四)——断开重连

java mina长连接短连接_MINA实现TCP长连接(四)——断开重连

时间:2023-10-27 10:56:37

相关推荐

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 /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源码如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。