初学Netty-Netty Helloword
Posted 赵KK日常技术记录
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学Netty-Netty Helloword相关的知识,希望对你有一定的参考价值。
Netty是什么?
关于netty的定义网上有很多种,我们还是回到官网上寻找
官网直译后:Netty是 一个异步事件驱动的网络应用程序框架,
用于快速开发可维护的高性能协议服务器和客户端。
关键词:异步的,事件驱动的,网络应用这里我们不做详解,具体概念可以自行查找
Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化并简化了TCP和UDP套接字服务器等网络编程。
“快速简便”并不意味着最终的应用程序会受到可维护性或性能问题的影响。Netty经过精心设计,具有丰富的协议,如FTP,SMTP,HTTP以及各种二进制和基于文本的传统协议。因此,Netty成功地找到了一种在不妥协的情况下实现易于开发,性能,稳定性和灵活性的方法。
官方文档可以说非常详细的介绍了整体架构,直接下载最新版文档进行配置
---性能
吞吐量更高,延迟更低
减少资源消耗
最小化不必要的内存复制
关于netty的jar包管理我们采用Gradle的方式进行管理,我们打开Gradle官网
Gradle构建工具类比Maven,也有相关的命令
./gradlew -v 版本号
./gradlew clean 清除9GAG/app目录下的build文件夹
./gradlew build 检查依赖并编译打包
./gradlew assembleDebug 编译并打Debug包
./gradlew assembleRelease 编译并打Release的包
Maven常用:清理-编译-打包-部署等
我们这里进行安装包下载
点击
找到
这里有两个版本,
Binary-only
complete
个人建议下载conplete,包含所有的文档及jar包
解压后进行环境配置
IDEA引入配置
选择:User local gradle distribution 找到目录F:\gradle-5.1.1
选择Jdk版本
新建一个项目,选择Gradle
填入G-A-V,项目完成后会自动层级划分
执行build命令
打开build.gradle
增加依赖管理,系统会自动从mavenRepository进行下载 ;
mavenrepository官网:https://search.maven.org/
netty 基于socket 远程协议,长连接实现客户端与服务端的服务器,HTTP的服务器
netty 没有遵循Http的servlet规范
通道 channel channelhandler 通道处理器(类似拦截器),管道
所有的netty程序呢处理过程可以简单理解为
定义好父子线程组-->在childinitializer定义好相关处理通道处理器,处理器在回调函数写好
Java中创建线程一般是有1.5以前呢实现Runable接口,实现Thread类,1.5以后新加了实现Callable接口,或者从线程池中获取,这里的定义线程组可理解为创建接收客户端处理的线程组,区别于Thread
我们贴一下NioEventLoopGroup源码;
在这里bossGroup用于获取连接,然后交给work处理
ServerBootstrap 用于启动服务端的类
这里注意一下:
SocketChannel导包:import io.netty.channel.socket.SocketChannel;
设置响应头信息并相应,ctx.writeAndFlush(response)
这里呢将我们自己写的testserverInitializer添加进来
进行端口号绑定
然后try finally关闭
启动程序
在linux环境下进行测试:
curl http://localhost:8080
返回字符串Hello world
但是控制台报错
再次访问
到此结束;
参考视频https://www.bilibili.com/video/av35831927/?p=4观后整理
以上是关于初学Netty-Netty Helloword的主要内容,如果未能解决你的问题,请参考以下文章