日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java mina长连接短连接_MINA实现TCP长连接(四)——断开重连 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

今天涉及以下內容:

mina官網及實現(xiàn)客戶端需要的jar包

客戶端實現(xiàn)重連接涉及到的幾個類

重連接在Activity中的使用

效果圖和項目結構圖

重連接涉及到的類源碼

先來波效果圖

image.png

image.png

一.mina官網及實現(xiàn)客戶端需要的jar包

mina是一個通訊長連接框架,其官網如下:

mina官網

利用mina實現(xiàn)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下載下來,然后導入到自己的項目中。

二.客戶端實現(xiàn)重連接涉及到的幾個類

客戶端重連的話主要涉及兩個類:

ClientReConnectListener:實現(xiàn)IoServiceListener接口,主要用于監(jiān)聽鏈接斷開狀態(tài)

TmClientManager:其中提供斷開重連的具體邏輯

三.重連接在Activity中的使用

下面來看看TmClientManager,TmClientConfig等類在Activity中實現(xiàn)的斷開重連通訊功能,下面貼出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();

//初始化數(shù)據

initData();

//設置監(jiān)聽

setListener();

}

/**初始化控件**/

private void initView(){

mTv=findViewById(R.id.tv);

mBtn1=findViewById(R.id.btn1);

mBtn2=findViewById(R.id.btn2);

}

/**初始化數(shù)據**/

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)//設置接收數(shù)據緩存區(qū),默認2048

.setReconnect(true)//是否開啟斷開重連,默認false,即關閉

.setRcDelayTime(3000)//設置重連時間間隔,默認3秒(開啟斷開重連后生效)

//設置mina客戶端接收數(shù)據監(jiān)聽

.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);

}

/**設置監(jiān)聽**/

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";

//給服務端發(fā)送消息

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秒(開啟斷開重連后生效)

兩個參數(shù)設置實現(xiàn)斷開重連機制。具體處理已經封裝到TmClientManager類中了。

四.效果圖和項目結構圖

image.png

image.png

項目結構圖如下:

image.png

五.重連接涉及到的類源碼

下面貼出重連功能涉及到的兩個主要類:ClientReConnectListener和TmClientManager,其他代碼的話,大家可以參看我之前的文章。

ClientReConnectListener源碼如下:

總結

以上是生活随笔為你收集整理的java mina长连接短连接_MINA实现TCP长连接(四)——断开重连的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。