初学Netty-Netty Helloword

举报
赵KK日常技术记录 发表于 2023/06/24 16:01:51 2023/06/24
【摘要】 Netty是什么?关于netty的定义网上有很多种,我们还是回到官网上寻找官网直译后:Netty是 一个异步事件驱动的网络应用程序框架, 用于快速开发可维护的高性能协议服务器和客户端。关键词:异步的,事件驱动的,网络应用这里我们不做详解,具体概念可以自行查找Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化并简化了TCP和UDP套接字服务...

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

但是控制台报错       


图片

再次访问

图片

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。