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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android mina分析,Android与Mina整合

發布時間:2023/12/1 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android mina分析,Android与Mina整合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近想在自己做的安卓手機應用中加入即時聊天功能,于是想到了用Mina來實現,也是由于自己想著偷懶,借用了官方的example中chat的相關代碼,經過一番改造,很快就能在java環境中正常運行了。確認沒問題后,將client端代碼移到了Android中,但是移植過程中并不順利,每次都是Java.lang.NoclassDefFoundError,提示java.lang.NoClassDefFoundError: org/apache/mina/core/filterchain/IoFilterEvent,但實際上這個類是存在的,一時間不知道問題出在哪。

源碼如下:

public boolean connect(NioSocketConnector connector, SocketAddress address,

boolean useSsl) {

if (session != null && session.isConnected()) {

throw new IllegalStateException(

"Already connected. Disconnect first.");

}

try {

IoFilter LOGGING_FILTER = new LoggingFilter();

IoFilter CODEC_FILTER = new ProtocolCodecFilter(

new TextLineCodecFactory());

connector.getFilterChain().addLast("mdc", new MdcInjectionFilter());

connector.getFilterChain().addLast("codec", CODEC_FILTER);

connector.getFilterChain().addLast("logger", LOGGING_FILTER);

if (useSsl) {

SSLContext sslContext = BogusSslContextFactory

.getInstance(false);

SslFilter sslFilter = new SslFilter(sslContext);

sslFilter.setUseClientMode(true);

connector.getFilterChain().addFirst("sslFilter", sslFilter);

}

connector.setHandler(handler);

ConnectFuture future1 = connector.connect(address);

future1.awaitUninterruptibly();

if (!future1.isConnected()) {

return false;

}

session = future1.getSession();

login();

return true;

} catch (Exception e) {

return false;

}

}

原本以為是安卓版本或者Mina版本的問題,結果嘗試了幾個版本都存在同樣的問題,只好慢慢找原因。最終找到原因,只要加入了mdc過濾器,那么就會報這樣的錯誤,所以在Server端和Client端都注掉acceptor.getFilterChain().addLast("mdc", new MdcInjectionFilter())這一行,之后一切恢復正常。

總結

以上是生活随笔為你收集整理的android mina分析,Android与Mina整合的全部內容,希望文章能夠幫你解決所遇到的問題。

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