Netty入门(一)环境搭建及使用
一、項(xiàng)目創(chuàng)建
在 Eclipse 中右鍵,新建->項(xiàng)目->Maven->Maven Project->下一步->選擇 quickstart
下一步->設(shè)置如圖(參數(shù)自取)
點(diǎn)擊完成。
? 項(xiàng)目會自動創(chuàng)建 pom.xml 文件,打開該文件,點(diǎn)擊 Dependencies標(biāo)簽->Add..,設(shè)置如圖(參數(shù)由 Netty 版本決定):
點(diǎn)擊 OK,保存文件,觀察 Maven Dependencies 下,
netty 的 jar 包已經(jīng)添加完畢。到此為止,項(xiàng)目配置完畢了,下面就來添加代碼吧。
?
二、實(shí)現(xiàn)一個(gè)簡單的服務(wù)端 demo
1. 首選我們需要自定義一個(gè)類處理服務(wù)器接收到的消息
1 package com.coder.server;2 3 import io.netty.buffer.ByteBuf;4 import io.netty.channel.ChannelHandlerContext;5 import io.netty.channel.ChannelInboundHandlerAdapter;6 import io.netty.util.CharsetUtil;7 import io.netty.util.ReferenceCountUtil;8 9 /** 10 * 輸出接收到的消息 11 * @author Coder 12 * 13 */ 14 public class HelloServerHandler extends ChannelInboundHandlerAdapter { 15 /** 16 * 收到數(shù)據(jù)時(shí)調(diào)用 17 */ 18 @Override 19 public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { 20 try { 21 ByteBuf in = (ByteBuf)msg; 22 System.out.print(in.toString(CharsetUtil.UTF_8)); 23 } finally { 24 // 拋棄收到的數(shù)據(jù) 25 ReferenceCountUtil.release(msg); 26 } 27 28 // ctx.write(msg); 29 // ctx.flush(); 30 } 31 32 /** 33 * 當(dāng)Netty由于IO錯(cuò)誤或者處理器在處理事件時(shí)拋出異常時(shí)調(diào)用 34 */ 35 @Override 36 public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { 37 // 當(dāng)出現(xiàn)異常就關(guān)閉連接 38 cause.printStackTrace(); 39 ctx.close(); 40 } 41 }該類主要是實(shí)現(xiàn)了接收客戶端發(fā)來的消息,并輸出到控制臺。
?
2. 然后我們就能實(shí)現(xiàn)一個(gè)簡單的服務(wù)端程序了
Netty 服務(wù)器的通信步驟為:
? 那么,這便是一個(gè)可執(zhí)行的服務(wù)端程序了。運(yùn)行后控制臺輸出如下:
?
三、測試?
? 我們可以去自定義客戶端程序,這里為了方便使用 telnet 充當(dāng)客戶端。
需要注意的是,Windows 默認(rèn)是沒有開啟 telnet 客戶端的,需要我們手動開啟。
菜單->控制面板->程序->打開或關(guān)閉Windows功能,設(shè)置如圖:
這樣我們就能用 telnet 客戶端了。
在 cmd 窗口輸入命令如下:
打開窗口如下:
這時(shí)候我們在該窗口輸入什么,eclipse 控制臺也會對應(yīng)輸出相應(yīng)內(nèi)容。如下:
注意:telnet 窗口會看不到輸入的字符,只要輸入 ctrl+L 就可以看到輸入的字符了。
總結(jié)
以上是生活随笔為你收集整理的Netty入门(一)环境搭建及使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强联通分量算法的个人详解Tarjan算法
- 下一篇: 剩余定理