新建***實現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版本 先看一下效果 初始狀態 當伺服器端程式關...