日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

詳解Java Socket通信封裝MIna框架

瀏覽:207日期:2022-08-11 09:47:47
目錄核心類各個擊破IoServiceIoFilterIoHandler總結(jié)核心類

IoService :Mina中將服務(wù)端和客戶端都看成是服務(wù),這里提供統(tǒng)一接口IoService,這個接口的作用就是用來處理套接字機(jī)制。也正是IoService來監(jiān)聽消息返回消息這些步驟,可以說IoService就是我們Mina中核心

IoProcessor:這個接口在另一個線程上,負(fù)責(zé)檢查是否有數(shù)據(jù)在通道上讀寫,也就是說它也擁有自己的Selector,這是與我們使用JAVA NIO 編碼時的一個不同之處,通常在JAVA NIO 編碼中,我們都是使用一個Selector,也就是不區(qū)分IoService與IoProcessor 兩個功能接口。另外,IoProcessor 負(fù)責(zé)調(diào)用注冊在IoService 上的過濾器,并在過濾器鏈之后調(diào)用IoHandler

IoFilter : 定義了一些攔截器 , 和我們web中攔截器一樣,用來橫向攔截處理一些全局的操作(日志處理,編碼處理)。其中我們必須注意的是加解密消息。作為一個好的框架肯定是有默認(rèn)的攔截器的(TextLineCodecFactory )。默認(rèn)攔截器可以叫消息強(qiáng)制轉(zhuǎn)換為String類型。畢竟String最通用

IoHandler : 這個是我們處理消息的邏輯,前面的攔截器只是在接受是進(jìn)行一些驗證、翻譯的功能。拿到數(shù)據(jù)之后我們需要做的事情就是在IoHandler中

各個擊破IoService

首先我們已服務(wù)端NioSocketAcceptor為列,看看我們的服務(wù)類之間的結(jié)構(gòu)依賴關(guān)系

詳解Java Socket通信封裝MIna框架

IoService是服務(wù)的鼻祖,無論在我們看來的服務(wù)端還是客戶端都得繼承它(間接繼承)。在IoService中我們會定義我們消息的處理過濾器(上文的攔截器),消息處理的業(yè)務(wù)類。在上文簡介中我們知道,這一步其實是IoProcessor來完成,那么IoProcessor在什么出現(xiàn)呢。比如Mina框架中用來創(chuàng)建服務(wù)端類NioSocketAcceptor。他直接繼承了AbstractPollingIoAcceptor。而AbstractPollingIoAcceptor類中根據(jù)參數(shù)創(chuàng)建了我們需要的IoProcessor.從而我們有了IoProcessor就可以執(zhí)行消息間的通信了。

詳解Java Socket通信封裝MIna框架

所以過濾器、處理器實在我們服務(wù)啟動之前配置好的。一旦啟動成功就無法再修改了。我們服務(wù)端NioSocketAcceptor通過bind方法就可以綁定到指定端口上。我們這里的綁定實現(xiàn)了多態(tài)綁定。我們可以綁定多個服務(wù)。

/*** {@inheritDoc}*/@Overridepublic final void bind(Iterable<? extends SocketAddress> localAddresses) throws IOException { if (isDisposing()) {throw new IllegalStateException('The Accpetor disposed is being disposed.'); } if (localAddresses == null) {throw new IllegalArgumentException('localAddresses'); } List<SocketAddress> localAddressesCopy = new ArrayList<>(); for (SocketAddress a : localAddresses) {checkAddressType(a);localAddressesCopy.add(a); } if (localAddressesCopy.isEmpty()) {throw new IllegalArgumentException('localAddresses is empty.'); } boolean activate = false; synchronized (bindLock) {synchronized (boundAddresses) { if (boundAddresses.isEmpty()) {activate = true; }}if (getHandler() == null) { throw new IllegalStateException('handler is not set.');}try { Set<SocketAddress> addresses = bindInternal(localAddressesCopy); synchronized (boundAddresses) {boundAddresses.addAll(addresses); }} catch (IOException | RuntimeException e) { throw e;} catch (Exception e) { throw new RuntimeIoException('Failed to bind to: ' + getLocalAddresses(), e);} } if (activate) {getListeners().fireServiceActivated(); }}

在上面我們可以看到bind最后是去激活對應(yīng)的監(jiān)聽器。我們一個IoServer處理一個線程中的消息。我們監(jiān)聽器就是監(jiān)聽線程內(nèi)的消息。每一次的綁定都會有不同的監(jiān)聽器、ioSession去專門處理消息之間的通信。我們可以通過IoSession設(shè)置一些請求數(shù)據(jù)完成數(shù)據(jù)的權(quán)限驗證。

在服務(wù)創(chuàng)建的時候我們正常需要設(shè)置IoSession的一些配置。通過getSessionConfig方法獲取IoSessionConfig。里面設(shè)置參數(shù)常用如下:

setReadBufferSize : 設(shè)置讀取數(shù)據(jù)的緩沖區(qū)大小 setMinReadBufferSize: 設(shè)置緩沖區(qū)最大值 setMaxReadBufferSize: 設(shè)置緩沖區(qū)最小值 setThroughputCalculationInterval: 設(shè)置通道計算時間 默認(rèn)3s setIdleTime(IdleStatus status, int idleTime): status 設(shè)置是一方還是雙方 , idLetime 是超過多久就會進(jìn)入空閑狀態(tài)

IoAcceptor acceptor=new NioSocketAcceptor(); acceptor.getSessionConfig().setReadBufferSize(2048); acceptor.getSessionConfig.setIdleTime(IdleStatus.BOTH_IDLE,10);IoFilter

在IoService中有獲取filter鏈的一個方法 DefaultIoFilterChainBuilder getFilterChain() , 我們需要做的就是定義過濾器,然后通過該方法獲取過濾鏈加入到請求鏈上。我們自定義過濾器也很簡單,只需要繼承IoFilterAdapter這個類就好了。

acceptor.getFilterChain().addLast('codec', new ProtocolCodecFilter(new TextLineCodecFactory( Charset.forName('UTF-8'),LineDelimeter.WINDOWS.getValue(),LineDelimiter. WINDOWS.getValue())) );

TextLineCodecFactory 這個類是Mina提供的編解碼工廠,這個工廠的特性是以換行符’rn’為結(jié)束通信的標(biāo)志。也就是說如果我們傳遞消息沒有換行符,另外一段會繼續(xù)接受消息知道接受到’rn’才會接受,并把接受到的消息通過編解碼器轉(zhuǎn)到IoHandler層供業(yè)務(wù)層處理。(這里博主被坑在這里了)

IoHandler

到了這一步,我們的通信基本就已經(jīng)完成了。剩下的事情已經(jīng)和Mina基本沒多大關(guān)聯(lián)了。我們將在這里處理業(yè)務(wù)邏輯,使用到的就是Handler提供的接收消息和發(fā)送消息兩個功能。這里我們需要注意的是Handler提供messageReceived和messageSent并不是字面意思。前者就是消息的接受,但是后者并不是消息的發(fā)送。我們常用的發(fā)送消息是session.write方法。

總結(jié)

今天我們了解了Mina工作的流程,主要就是IoFilter和IoHandler實現(xiàn)消息的通信 。 千里之行始于足下,一點一點的進(jìn)步。下面貼出一份總結(jié)的圖譜幫助我們理解Mina流程

詳解Java Socket通信封裝MIna框架

以上就是詳解Java Socket通信封裝MIna框架的詳細(xì)內(nèi)容,更多關(guān)于Java Socket通信封裝MIna框架的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产一区不卡| 美女精品一区| 国产精品九九| 久久久久亚洲精品中文字幕| 麻豆精品新av中文字幕| 成人免费一区| 国产综合色产| 欧美特黄一区| 亚洲精品三级| 欧美1区2区3| 亚洲va中文在线播放免费| 欧美日韩视频一区二区三区| 在线精品视频一区| 久久国产麻豆精品| 日韩欧美精品| 中文字幕中文字幕精品| 你懂的国产精品永久在线| 欧美日韩色图| 四虎精品一区二区免费| 精品精品99| 五月精品视频| 欧美亚洲一级| 欧洲av不卡| 蜜桃久久久久久| 激情久久一区二区| 国产免费成人| 国产一区二区三区四区大秀| 午夜精品婷婷| 日本a级不卡| 日韩成人精品一区二区| 美女国产精品| 国产成人免费av一区二区午夜| 尤物在线精品| 麻豆久久一区二区| 欧美女激情福利| 麻豆一区二区三| 午夜一级久久| 中文一区一区三区高中清不卡免费| 1024精品久久久久久久久| 国产精品永久| 樱桃成人精品视频在线播放| 国产高清精品二区| 天堂av在线一区| caoporn视频在线| 婷婷综合国产| 天堂√8在线中文| 日韩高清一区在线| 精品一区毛片| 精品久久97| 日韩精品一区二区三区中文在线 | 日韩国产欧美一区二区三区| 精品捆绑调教一区二区三区| 日韩av一二三| 国产精品丝袜xxxxxxx| 91欧美在线| 国产黄色一区| 日本欧美一区| 中文字幕日韩高清在线| 伊人久久国产| 久久av免费| 日韩精品免费视频一区二区三区| 极品裸体白嫩激情啪啪国产精品| 精品久久电影| 国产精品久一| 日本aⅴ免费视频一区二区三区| 亚洲香蕉网站| 日韩欧美一区二区三区免费看| 国产亚洲观看| 日韩动漫一区| 亚洲男女av一区二区| 视频一区二区不卡| 欧美特黄一区| 成人一二三区| 国产亚洲欧美日韩精品一区二区三区 | 国产欧美欧美| 在线观看一区| 国产美女精品| 欧美精品黄色| 欧美日韩国产一区二区三区不卡 | 亚洲精品婷婷| 亚洲无线观看| 亚洲婷婷丁香| 亚洲精品人人| 日韩视频精品在线观看| 欧美高清不卡| 伊人精品在线| 99riav国产精品| 99在线|亚洲一区二区| 欧美日韩少妇| 亚洲免费一区二区| 久久高清免费观看| 久久亚洲不卡| 日本一区免费网站| 国产情侣一区在线| 欧美日韩一区二区三区不卡视频| 日韩精品视频中文字幕| 日本成人中文字幕| 欧美日韩亚洲一区三区| 日韩精品五月天| 国产欧美日韩一级| 久久一区视频| 日韩精品欧美| 性色一区二区| 久久国产日韩欧美精品| 麻豆国产一区| 午夜av不卡| av一区二区高清| 久久午夜精品一区二区| 91精品麻豆| 国产va免费精品观看精品视频| 成人免费网站www网站高清| 欧美/亚洲一区| 中文字幕一区二区三区日韩精品 | 国产亚洲午夜| 日韩精品欧美大片| 欧美激情三区| 日韩在线观看一区| 亚洲少妇在线| 国产精品视频一区二区三区综合| 日本一区二区免费高清| 久久精品亚洲人成影院| 丝袜美腿一区二区三区| 国产欧美综合一区二区三区| 不卡福利视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产无遮挡裸体免费久久| 国产va在线视频| 激情久久五月| 亚洲精品黄色| 中文字幕人成乱码在线观看 | 日韩在线观看一区| 男女男精品网站| 欧美激情视频一区二区三区在线播放| 91日韩欧美| 蜜桃久久精品一区二区| 久久久精品国产**网站| 亚洲精品一二三区区别| 国产精品porn| 亚洲女同一区| 国产亚洲第一伦理第一区| 日韩欧美一区二区三区在线视频 | 97精品久久| 久久久久99| 日本aⅴ精品一区二区三区| 成人影视亚洲图片在线| 久久午夜精品| 日本在线高清| 日韩成人午夜精品| 精精国产xxxx视频在线野外| 日本强好片久久久久久aaa| 99久久亚洲精品蜜臀| 欧美视频一区| 欧美日韩日本国产亚洲在线| 国产精品久久久亚洲一区| av亚洲免费| 国产毛片精品| 91久久中文| www.九色在线| 偷拍亚洲精品| jiujiure精品视频播放| 久久91视频| 日韩精品免费视频人成| 91九色精品国产一区二区| 国产日韩欧美三级| aa国产精品| 日韩毛片视频| 麻豆91小视频| 欧美日韩调教| 麻豆精品91| 欧美国产91| 中文字幕在线高清| 欧美aa在线视频| 欧美一级全黄| 日韩一区欧美二区| av一区二区高清| 高清不卡亚洲| 国产精品中文字幕亚洲欧美 | 婷婷亚洲五月| 欧美日韩国产v| 精品一区视频| 国产欧美日韩精品高清二区综合区 | 中文字幕系列一区| 久久在线91| 国产欧美日韩亚洲一区二区三区| 亚洲神马久久| 91久久久精品国产| 91精品精品| 日韩久久一区二区三区| 国产成人精品一区二区三区视频 | 在线观看视频免费一区二区三区| re久久精品视频| 久久久精品五月天| 日本不卡免费高清视频在线| 红杏一区二区三区| 大香伊人久久精品一区二区| 精品国产亚洲一区二区三区大结局 | 日韩国产精品久久久| 综合亚洲自拍| 天堂va欧美ⅴa亚洲va一国产| 一区二区三区网站|