1. 程式人生 > >Netty編寫第一個服務端與客戶端應用程式

Netty編寫第一個服務端與客戶端應用程式

服務端

        所有的 Netty 伺服器都需要以下兩部分

  •         至少有一個 ChannelHandler:該遵紀安實現了伺服器對客戶端接受的資料的處理邏輯,即業務邏輯
  •         引導(ServerBootStrap):這是配置伺服器的啟動程式碼。它必須繫結到它要監聽的伺服器埠上面

ChannelHandler

        一個ChannelHandler類中至少應該包含以下三個方法:

        channelRead():對於每個傳入的訊息都要呼叫

        channelReadComplete():表示讀取到了當前批量中的最後一條訊息

        exceptionCaught():讀取操作期間,出現異常後會被呼叫

          具體方法和使用類與Netty版本有關係,本次示例程式碼採用的版本

    <dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>5.0.0.Alpha1</version>
    </dependency>


引導(ServerBootStrap)

        具體需要做至少兩件事:

  •         繫結埠
  •         配置 Channel ,以將有關的入站訊息通知給 對應的 ChannelHandler 例項

客戶端

        所有的 Netty 客戶端至少包括

  •         至少有一個 ChannelHandler:該遵紀安實現了伺服器對客戶端接受的資料的處理邏輯,即業務邏輯
  •         引導(BootStrap):這是配置伺服器的啟動程式碼。它必須繫結到它要監聽的伺服器埠上面

ChannelHandler

        至少包含下面三個方法:

        channelActive():連線建立後將會被呼叫

        channelRead():讀取資料

        exceptionCaught():異常捕獲

引導(BootStrap)

        邏輯和服務端基本一致,主要區別點在於不需要繫結到一個一直被監聽的埠,而是需要用主機的地址和埠引數來連線遠端的地址。

總結

        本章節搭建了一個簡單的基於 Netty 的 CS 模式的架構,雖然只是一個簡單的應用程式,但是它可以伸縮到支援數千個併發連線——每秒比普通的基於套接字的 java 應用程式處理多得多的訊息。

        下一章我們將對 Netty 體系架構進行概述,以為之後深入全面的學習 Netty 打好基礎。