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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

DotNetty 学习

發布時間:2023/12/15 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 DotNetty 学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【轉載】http://www.cnblogs.com/littlegod/p/7699482.html

DotNetty的學習是帶著如下這些問題展開:

1. Socket基礎框架方案:

通信模式:異步非阻塞

DotNetty采用ServerBootstrap對象引導Socket服務器啟動,通過設置工作組線程(group),設置通道模式(Channel<TcpServerSocketChannel>),設置網絡參數(Option),設置主線程處理程序(Handler),設置子線程處理程序(ChildHandler)等來完成。

每一個創建的socket對象被映射成IChannel對象,其管理則是通過 IChannelPipeline管道來統一處理其生命周期,管道通過AddLast 方法注冊各類 Handler處理程序, 這些Handler處理程序被劃分為 消息入站和消息出站兩種類型,為完成需要的功能,需要重寫框架設計好的事件處理方法, 常用的包括 IChannel的注冊,激活,讀取,寫入,釋放等等。

2.粘包拆包的實現

DotNetty對通信的粘包拆包是由消息入站和消息出戰的Handler處理程序, 入站的Handler 解析傳入消息的包頭,包長度等,出站則要對消息添加包頭和長度等信息,這兩個Handler處理程序分別是:LengthFieldPrepender ,LengthFieldBasedFrameDecoder

3.心跳包實現

管道中加入IdleStateHandler來處理超時時間,消息處理Handler則需要重寫userEventTriggered 處理超時。

4. Channel管道機制解決代碼復用問題

消息可以從任何Handler點發起,如果沒有明確具體的Handler,則整個管道都會走一遍,比如 通過context執行寫入,那么消息則會被從當前Handler處傳遞到下一個Handler; 如果使用IChannel對象來寫入,則不確定是在哪個Handler上,消息則會在整個管道走一遍。

5. IChannel對象和Context對象復用問題

context對象包含了對Ichannel對象的引用, Ichannel對象通過獲取當前管道對象可以獲取當前context對象。 二者都可以緩存并后續使用。

6.DotNetty對KeepAlive的處理

在引導程序的設置中,可以設置ChannelOption,開啟KeepAlive, 但是框架也僅僅實在這一層面做了處理,如果想要對keepalive的空閑時間等更精細化設置,框架還不支持,從這點上應該看出DotNetty不推薦使用KeepAlive來維持連接。

--------------------------------------------------------------------------------------------------

1:關于Channel:

SocketDatagramChannel:針對UDP的管道實現

TcpServerSocketChannel:針對TCP服務端的管道實現

TcpSocketChannel:針對TCP客戶端的管道實現

2:關于編解碼器:

Echo.Server中關于編碼和解碼器的代碼如下:

bootstrap
.Option(ChannelOption.SoBacklog, 10000)
.Handler(new LoggingHandler("SRV-LSTN"))
.ChildHandler(new ActionChannelInitializer<IChannel>(channel =>
{
IChannelPipeline pipeline = channel.Pipeline;
if (tlsCertificate != null)
{
pipeline.AddLast("tls", TlsHandler.Server(tlsCertificate));
}
pipeline.AddLast(new LoggingHandler("SRV-CONN"));
pipeline.AddLast("編碼器", new LengthFieldPrepender(2));
pipeline.AddLast("解碼器", new LengthFieldBasedFrameDecoder(ushort.MaxValue, 0, 2, 0, 2));

pipeline.AddLast("echo", new EchoServerHandler());
}));

LengthFieldPrepender為什么是編碼器,LengthFieldBasedFrameDecoder為什么是解碼器,我們來看相關的代碼實現:
public class LengthFieldPrepender : MessageToMessageEncoder<IByteBuffer>
public class LengthFieldBasedFrameDecoder : ByteToMessageDecoder
也就是說,LengthFieldPrepender類就是對應了編碼操作,而LengthFieldBasedFrameDecoder類就是對應了解碼操作。

總結

以上是生活随笔為你收集整理的DotNetty 学习的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 这里只有精品在线播放 | 大地资源在线观看免费高清版粤语 | 日韩精品首页 | 蜜臀久久 | 日韩免费av网站 | 七月婷婷综合 | 午夜特级毛片 | 精品视频一区二区三区在线观看 | 日韩激情床戏 | 99热这里都是精品 | 欧美日韩六区 | 我爱我色成人网 | 偷拍网亚洲 | 中国白嫩丰满人妻videos | 日本高清三区 | 久久婷婷伊人 | 亚洲av无码乱码国产精品久久 | 91国产在线免费观看 | 亚洲一二三视频 | 鲁鲁狠狠狠7777一区二区 | 国产精品入口夜色视频大尺度 | 91精品国产综合久久久久 | 极品美女一区二区三区 | 99综合| 亚洲精品一区二区18漫画 | 中文一区在线 | ass亚洲熟妇毛耸耸pics | 亚洲国产天堂 | a v视频在线观看 | av天堂永久资源网 | 夜夜操夜夜摸 | 少妇aaaa | 海角社区在线视频播放观看 | 国产精品suv一区二区三区 | 亚洲一区你懂的 | 精品国产一区二区三区四 | 超级碰在线视频 | 亚洲12p| www网站在线观看 | 成人亚洲区 | 喷水av | 久久久视频6r | 精品福利影院 | 欧美激情精品久久久久久 | 99精品在线免费视频 | 国产真实的和子乱拍在线观看 | 欧美精品一区二区三区久久久竹菊 | 日韩精品在线视频 | 免费看成人aa片无码视频羞羞网 | 动漫女生光屁股 | 制服丝袜国产在线 | 涩涩国产| 右手影院亚洲欧美 | 韩国三级国产 | 日本成人免费在线视频 | a级无毛片| www黄色com| 国产99久久久久久免费看 | 国产精品久久久久久久久晋中 | 欧美亚洲 | 黄色三级小说 | www.蜜桃av| 怡红院毛片 | 夫妻自拍偷拍 | 亚洲调教欧美在线 | 日本污视频在线观看 | 欧美精品一区二区三区在线播放 | 色咪咪网站 | 久久香蕉综合 | 久久国产精品久久久久久电车 | 91本色| 大地资源中文第三页 | 奇米99| 精品久久久久一区 | 91精品一区二区三区四区 | 亚洲欧美精品久久 | 欧美视频久久久 | 欧美特级毛片 | 日韩欧美超碰 | 久久美利坚 | 黄色录像a| 日本学生初尝黑人巨免费视频 | 成人短视频在线免费观看 | 亚洲AV第二区国产精品 | 天天干中文字幕 | 蜜臀人妻四季av一区二区不卡 | aa亚洲| 中文字幕无码精品亚洲35 | xxx精品 | 一区二区三区国产在线观看 | aa级黄色片 | 国产日产精品一区二区三区四区 | 免费看的黄色小视频 | 青青草免费在线视频 | 特级a级片 | 久久亚洲精精品中文字幕早川悠里 | 午夜激情在线 | 岛国av免费在线观看 | 成人三级在线播放 |