Mina客戶端斷線重連

2021-10-04 13:34:05 字數 2917 閱讀 1034

新建***實現mina的ioservicelistener介面:

import org.apache.mina.core.service.ioservice;

import org.apache.mina.core.service.ioservicelistener;

import org.apache.mina.core.session.idlestatus;

import org.apache.mina.core.session.iosession;

public class iolistener implements ioservicelistener

@override

public void serviceidle(ioservice service, idlestatus idlestatus)

throws exception

@override

public void servicedeactivated(ioservice service)

throws exception

@override

public void sessioncreated(iosession session)

throws exception

@override

public void sessionclosed(iosession session)

throws exception

@override

public void sessiondestroyed(iosession session)

throws exception

}

在建立客戶端時加入監聽:

niosocketconnector connector = new niosocketconnector(); // 建立連線客戶端

connector.setconnecttimeoutmillis(30000); // 設定連線超時

connector.getsessionconfig().setreceivebuffersize(10240); // 設定接收緩衝區的大小

connector.getsessionconfig().setsendbuffersize(10240);// 設定輸出緩衝區的大小

// 加入解碼器

textlinecodecfactory factory = new textlinecodecfactory(charset.forname("gbk"), linedelimiter.windows.getvalue(), linedelimiter.windows.getvalue());

factory.setdecodermaxlinelength(10240);

factory.setencodermaxlinelength(10240);

connector.getfilterchain().addlast("codec", new protocolcodecfilter(factory));

connector.setdefaultremoteaddress(new inetsocketaddress("127.0.0.1", 9999));// 設定預設訪問位址

connector.sethandler(new clienthandler());

// 加入重連***

connector.addlistener(new iolistener()

}catch (exception ex)}}

});// 啟動時連線失敗自動重連

for (;;)

catch (runtimeioexception e)

catch (interruptedexception e1)

}}

niosocketconnector connector = new niosocketconnector(); // 建立連線客戶端

connector.setconnecttimeoutmillis(30000); // 設定連線超時

connector.getfilterchain().addfirst("reconnection", new iofilteradapter()

}catch (exception ex)}}

});connector.getsessionconfig().setreceivebuffersize(10240); // 設定接收緩衝區的大小

connector.getsessionconfig().setsendbuffersize(10240);// 設定輸出緩衝區的大小

textlinecodecfactory factory = new textlinecodecfactory(charset.forname("gbk"), linedelimiter.windows.getvalue(), linedelimiter.windows.getvalue());

factory.setdecodermaxlinelength(10240);

factory.setencodermaxlinelength(10240);

connector.getfilterchain().addlast("codec", new protocolcodecfilter(factory));

connector.setdefaultremoteaddress(new inetsocketaddress("127.0.0.1", 9999));// 設定預設訪問位址

connector.sethandler(new clienthandler());

// 啟動時連線失敗自動重連

for (;;)

catch (runtimeioexception e)

catch (interruptedexception e1)

}}

metaq的客戶端自動斷線重連機制

1.metaq的資料傳輸基於gecko 3.remoteclient的連線語句如下 for int i 0 i conncount i catch final exception e 在連線建立時,會新建乙個定時任務,進行連線檢測,連線的 如下 override public void run ca...

C 使用TCPClient客戶端斷線重連伺服器

最近做模擬雷達推送資料的專案,用乙個軟體模擬幾百台雷達往後端推送資料,資料處理的 我就不貼了,主要是建立socket連線和斷線重連部分的 主要是針對服務端斷開連線後,客戶端這邊要重現伺服器。我是先從資料庫讀取資料,對資料封裝傳到後端,讀資料的時候用乙個list存放資料庫的雷達裝置名稱,根據裝置建立s...

基於TCP通訊的客戶端斷線重連

在cs程式中,斷線重連應該是乙個常見的功能。此處的斷線重連主要指的是伺服器端因為某種故障,伺服器端程式或者系統進行了重新啟動,客戶端能夠自動探測到伺服器端掉線,並嘗試重新進行連線 本程式基於來自英國的開源c 通訊框架的networkcomms 2.3.1版本 先看一下效果 初始狀態 當伺服器端程式關...