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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

netty java开发文档_Netty简明教学文档

發(fā)布時間:2024/9/27 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 netty java开发文档_Netty简明教学文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

寫個簡單點,比較小白的文檔,言語比較接地氣

Netty是什么?

NIO的高層封裝,NIO很難寫,所以有了Netty,方便異步的操作

service的主要代碼片段

public void run() throws Exception {

EventLoopGroup bossGroup = new NioEventLoopGroup(); // (1)

EventLoopGroup workerGroup = new NioEventLoopGroup();

try {

ServerBootstrap b = new ServerBootstrap(); // (2)

b.group(bossGroup, workerGroup)

.channel(NioServerSocketChannel.class) // (3)

.childHandler(new ChannelInitializer() { // (4)

@Override

public void initChannel(SocketChannel ch) throws Exception {

ch.pipeline().addLast(new DiscardServerHandler());

}

})

.option(ChannelOption.SO_BACKLOG, 128) // (5)

.childOption(ChannelOption.SO_KEEPALIVE, true); // (6)

// Bind and start to accept incoming connections.

ChannelFuture f = b.bind(port).sync(); // (7)

// Wait until the server socket is closed.

// In this example, this does not happen, but you can do that to gracefully

// shut down your server.

f.channel().closeFuture().sync();

} finally {

workerGroup.shutdownGracefully();

bossGroup.shutdownGracefully();

}

}

按照代碼順序解釋如下

(1) EventLoopGroup bossGroup = new NioEventLoopGroup();

事件循環(huán)隊列,用來接受或發(fā)送事件。大家可以把他想象成郵局,消息都要先到郵局,然后再分發(fā)出去,郵局維護了一個循環(huán)隊列,用來不斷的收信和發(fā)信。

(2)ServerBootstrap b = new ServerBootstrap();

啟動服務

(3) b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)

開啟了一個通道,這個通道是用來接受連接請求的,管道大家都知道吧,IO里也有,NIO中也有,一切Java中到處都是管道

(4).childHandler(new ChannelInitializer()

這個handler是用來表示響應什么樣的事件的,比如我們這里DiscardServerHandler,隨著程序的復雜,你會加上更多的handle,handler是具體干事的人

(5).option(ChannelOption.SO_BACKLOG, 128)

channel的配置參數(shù),具體可以查手冊

(6).childOption(ChannelOption.SO_KEEPALIVE, true);

option()是 NioServerSocketChannel的配置,childOption()是被parent ServerChannel接受的channel,這里就指的是NioServerSocketChannel

(7)ChannelFuture f = b.bind(port).sync();

綁定端口并開始

再看看我們主要進行事件處理的handle

public class DiscardServerHandler extends ChannelHandlerAdapter { // (1)

@Override

public void channelRead(ChannelHandlerContext ctx, Object msg) { // (2)

// Discard the received data silently.

((ByteBuf) msg).release(); // (3)

}

@Override

public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { // (4)

// Close the connection when an exception is raised.

cause.printStackTrace();

ctx.close();

}

}

(1)DiscardServerHandler extends ChannelHandlerAdapter

表示:俺是具體干事的人

(2)我們overrider了 channelRead(),用來讀取接受到的信息

(3)異常處理,懂的...

總結

以上是生活随笔為你收集整理的netty java开发文档_Netty简明教学文档的全部內容,希望文章能夠幫你解決所遇到的問題。

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