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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

netty获取玩家chanel_Netty中的Channel

發(fā)布時(shí)間:2024/10/12 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 netty获取玩家chanel_Netty中的Channel 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在JDK中就有Channel的概念了. 數(shù)據(jù)的讀寫(xiě)都要通過(guò)Channel進(jìn)行. 既然Netty是封裝了JDK, 同樣它也有自己的Channel. 一個(gè)是服務(wù)端Chanel(NioServerSocketChannel),另一個(gè)是客戶(hù)端Channel(NioSocketChannel).

NioServerSocketChannel負(fù)責(zé)監(jiān)聽(tīng)客戶(hù)端的Accpet事件,當(dāng)發(fā)生此事件時(shí).那么它什么時(shí)候?或者在哪里知道有Accept事件呢?在之前的文章中我們知道,每一個(gè)Channel都和一個(gè)NioEventLoop關(guān)聯(lián),NioServerSocketChannel也和一個(gè)NioEventLoop關(guān)聯(lián).而NioEventLoop封裝了一個(gè)IO Thread,由這個(gè)線程去監(jiān)聽(tīng)Accept事件.

NioEventLoop主要由三個(gè)過(guò)程構(gòu)成. 創(chuàng)建-啟動(dòng)-執(zhí)行. 執(zhí)行的環(huán)節(jié)是個(gè)無(wú)限循環(huán).當(dāng)IO Thread監(jiān)聽(tīng)到有Accept事件后, 會(huì)調(diào)用JDK底層accept()方法獲取到這個(gè)連接, 然后再封裝成Netty自己的NioSocketChannel.這個(gè)就是對(duì)應(yīng)的客戶(hù)端Channel.

每一個(gè)Channel都與一個(gè)Pipeline關(guān)聯(lián), 在創(chuàng)建Channel的時(shí)候也會(huì)創(chuàng)建出來(lái)一個(gè)與之關(guān)聯(lián)的Pipeline. Pipeline通過(guò)鏈表的方式將用戶(hù)自定義的處理器Handler放在Pipeline中, 當(dāng)Channel中有數(shù)據(jù)時(shí), 就會(huì)由關(guān)聯(lián)的Pipeline進(jìn)行處理, 更具體說(shuō), 是由里面的每個(gè)Handler進(jìn)行處理.

NioServerSocketChannel關(guān)聯(lián)的Pipeline有一個(gè)默認(rèn)的Handler,即ServerBootstrapAcceptor.它也是一個(gè)Handler.

pipeline.addLast(new ServerBootstrapAcceptor(ch, currentChildGroup, currentChildHandler, currentChildOptions, currentChildAttrs));

從名字中我們可以看出來(lái),它和接收客戶(hù)端連接有關(guān).沒(méi)錯(cuò), 上面我們也說(shuō)了, 當(dāng)客戶(hù)端NioSocketChannel被創(chuàng)建出來(lái)之后, 還沒(méi)有結(jié)束, 因?yàn)閱螁蔚膭?chuàng)建出來(lái)NioSocketChannel并沒(méi)有多少卵用. 后續(xù)流程就會(huì)交給這個(gè)ServerBootstrapAcceptor進(jìn)行處理.那么它又處理什么呢?主要包括初始化NioSocketChannel,以及將其注冊(cè)到NioEventLoop,而這個(gè)NioEventLoop肯定和NioServerSocketChannel關(guān)聯(lián)的那個(gè)NioEventLoop不是同一個(gè).

NioSocketChannel負(fù)責(zé)數(shù)據(jù)的讀寫(xiě).

總結(jié)

以上是生活随笔為你收集整理的netty获取玩家chanel_Netty中的Channel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。