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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Netty基本使用流程代码

發布時間:2025/4/16 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Netty基本使用流程代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面的代碼是Netty基本的使用流程代碼,幾乎Netty的使用都是使用下面的流程,這是一個HttpServer的簡單應用,它將返回"Hello world"給客戶端,復制修改以快速構建Netty應用(Netty版本4.1.10)。

TestServer.java

import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel;public class TestServer {public static void main(String[] args) {//兩個事件循環組,都是死循環,bossGroup接收客戶端EventLoopGroup bossGroup = new NioEventLoopGroup();EventLoopGroup workerGroup = new NioEventLoopGroup();try{ServerBootstrap serverBootstrap = new ServerBootstrap();serverBootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childHandler(new TestServerInitializer());ChannelFuture channelFuture = serverBootstrap.bind(8899).sync();channelFuture.channel().closeFuture().sync();}catch (Exception e){System.out.println(e.fillInStackTrace());}finally {bossGroup.shutdownGracefully();workerGroup.shutdownGracefully();}} }

TestServerInitializer.java

import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; import io.netty.handler.codec.http.HttpServerCodec;public class TestServerInitializer extends ChannelInitializer<SocketChannel> {@Overrideprotected void initChannel(SocketChannel socketChannel) throws Exception {ChannelPipeline pipeline = socketChannel.pipeline();pipeline.addLast("httpServerCodec", new HttpServerCodec());pipeline.addLast("testHttpServerHandler", new TestHttpServerHandler());} }

TestHttpServerHandler.java

import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.codec.http.*; import io.netty.util.CharsetUtil;public class TestHttpServerHandler extends SimpleChannelInboundHandler<HttpObject> {//讀取客戶端請求,并返回響應給客戶端@Overrideprotected void channelRead0(ChannelHandlerContext channelHandlerContext, HttpObject httpObject) throws Exception {if(httpObject instanceof HttpRequest){ByteBuf content = Unpooled.copiedBuffer("Hello world", CharsetUtil.UTF_8);FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,HttpResponseStatus.OK, content);response.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/plain");response.headers().set(HttpHeaderNames.CONTENT_LENGTH, content.readableBytes());channelHandlerContext.writeAndFlush(response);}} }

驗證:

$ curl 'http://localhost:8899' Hello world

總結

以上是生活随笔為你收集整理的Netty基本使用流程代码的全部內容,希望文章能夠幫你解決所遇到的問題。

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