1. 程式人生 > >Netty4.x使用者指導(1)3個HelloWorld小例子

Netty4.x使用者指導(1)3個HelloWorld小例子

最好的學習,莫過於通過官方文件進行學習,系統,透徹,權威,缺點是英文。本文,算做自己學習netty的第一篇,總體思路與User guide for 4.x基本一致,本篇文章不是嚴格意義的翻譯文章。開始了...

1.前言

1.1 問題

現 在,我們使用通用的應用程式和程式庫,進行互相交流。例如,我們經常使用HTTP client庫從web伺服器上獲取資訊,通過web services呼叫遠端介面。然而,通用的協議或實現,有時候不能很好的擴充套件伸縮。就像我們不能使用通用協議進行部分資訊的交換,如:huge files,e-mail,實時資訊。我們需要高度優化的協議實現,來完成一些特殊目的。比如,你想實現一款專門的

HTTP伺服器,以支援基於AJAX的聊天應用,流媒體,大檔案傳輸。你需要設計和實現一個完整的新協議,不可避免需要處理遺留協議,在不影響效能和穩定的情況下,實現新協議速度能有多塊?

1.2 解決方案

Netty 致力於提供非同步,基於事件驅動的網路應用框架,是一款進行快速開發高效能,可伸縮的協議伺服器和客戶端工具。換句話說,Netty是一個快速和容易開發的NIO客戶端,服務端網路框架,它簡化和使用流式方式處理網路程式設計,如TCP,UDP。

"快速和容易“,並不代表netty存在可維護性和效能問題。它很完美的提供FTP,SMTP,HTTP,二進位制和基於文字的協議支援。有的使用者可能已經發現了擁有同樣有點的其他網路應用框架。你可能想問:netty和他們的區別?這個問題不好回答,Netty被設計成提供最合適的API和實現,會讓你的生活更簡單。

2.開始

本節使用一些簡單的例子讓你快速的感知netty的核心結構。閱讀本節之後,你可以熟練掌握netty,可以寫一個client和server。

準備

JDK 1.6+

最新版本的netty:下載地址

1 <span style="background-color:#efefef;"><dependency><br>    <groupId>io.netty</groupId><br>    <artifactId
>netty-all</artifactId><br>    <version>${netty.version}</version><br></dependency><br></span>

2.1寫一個Discard服務

最簡單的協議,不是'hello world',而是DISCARD。這個協議拋棄接收的資料,沒有響應。

協議實現,唯一需要做的一件事就是無視所有接收到的資料,讓我們開始吧。

直接上Handler的實現,它處理來自netty的I/O事件。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 package io.netty.examples.discard;