netty 之 telnet HelloWorld 详解
2019獨角獸企業重金招聘Python工程師標準>>>
依賴工具
-
Maven
-
Git
-
JDK
-
IntelliJ IDEA
源碼拉取
從官方倉庫?https://github.com/netty/netty?Fork?出屬于自己的倉庫。為什么要?Fork??既然開始閱讀、調試源碼,我們可能會寫一些注釋,有了自己的倉庫,可以進行自由的提交。:smiling_imp:
使用?IntelliJ IDEA?從?Fork?出來的倉庫拉取代碼。
本文使用的 Netty 版本為?4.1.26.Final-SNAPSHOT?。
Maven Profile
打開 IDEA 的?Maven Projects?,選擇對應的 Profiles 。如下圖所示:
-
jdk8?:筆者使用的 JDK 版本是 8 ,所以勾選了?jdk8?。如果錯誤的選擇,可能會報如下錯誤:
java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer -
linux?: 選擇對應的系統版本。:smiling_imp: 筆者手頭沒有 windows 的電腦,所以不知道該怎么選。
修改完成后,點擊左上角的【刷新】按鈕,進行依賴下載,耐心等待...
解決依賴報錯
在?codec-redis?模塊中,類 FixedRedisMessagePool 會報如下類不存在的問題:
import io.netty.util.collection.LongObjectHashMap; import io.netty.util.collection.LongObjectMap;-
具體如下圖所示:
解決方式如下:
cd common; mvn clean compile;-
跳轉到?common?模塊中,編譯生成對應的類。為什么可以通過編譯生成對應的類呢,原因參見?common?模塊的?src/java/templates/io/netty/util/collection?目錄下的?.template?文件。
在 Github 上,也有多個針對這個情況討論的 issue :
-
《Can not find class io.netty.util.collection.LongObjectHashMap in 4.1.8.final》
-
《io.netty.util.collection.LongObjectHashMap not found at branch 4.1》
example 模塊
在?example?模塊里,官網提供了多個 Netty 的使用示例。?本文以?telnet?包下來作為示例。哈哈哈,因為最簡單且完整。
netty-helloworld
使用說明
軟件架構說明
使用netty實現客戶端<-->服務器通信
項目結構
netty-helloworld├── client├── Client.class -- 客戶端啟動類├── ClientHandler.class -- 客戶端邏輯處理類├── ClientHandler.class -- 客戶端初始化類├── server ├── Server.class -- 服務端啟動類├── ServerHandler -- 服務端邏輯處理類├── ServerInitializer -- 服務端初始化類使用telnet與服務端進行交互
-
項目找到com.sanshengshui.netty.server.Server類,右鍵debug as啟動SocketServer
-
打開telnet,和服務端進行交互操作
客戶端與服務端交互
-
項目找到com.sanshengshui.netty.server.Server類,右鍵debug as啟動Server
-
項目找到com.sanshengshui.netty.client.Client類,右鍵debug as啟動Client
演示如下:
結果也如上述所說!
其它
關于netty 之 telnet HelloWorld 詳解到這里就結束了。
歡迎工作一到五年的Java工程師朋友們加入Java架構開發:760940986
群內提供免費的Java架構學習資料(里面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!
?
轉載于:https://my.oschina.net/u/3906190/blog/2221952
總結
以上是生活随笔為你收集整理的netty 之 telnet HelloWorld 详解的全部內容,希望文章能夠幫你解決所遇到的問題。