java mina长连接短连接_MINA实现TCP长连接(四)——断开重连
前言
今天涉及以下內容:
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长连接(四)——断开重连的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3des java ecb_PHP 3D
- 下一篇: java 判断int是几位_快速判断一个