推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 赵KK日常技术记录 > 初学Netty-Netty Helloword

初学Netty-Netty Helloword

赵KK日常技术记录 2019-02-12

Netty是什么?

关于netty的定义网上有很多种,我们还是回到官网上寻找

官网直译后:Netty是 一个异步事件驱动的网络应用程序框架, 

用于快速开发可维护的高性能协议服务器和客户端。

关键词:异步的,事件驱动的,网络应用这里我们不做详解,具体概念可以自行查找

Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化并简化了TCP和UDP套接字服务器等网络编程。

“快速简便”并不意味着最终的应用程序会受到可维护性或性能问题的影响。Netty经过精心设计,具有丰富的协议,如FTP,SMTP,HTTP以及各种二进制和基于文本的传统协议。因此,Netty成功地找到了一种在不妥协的情况下实现易于开发,性能,稳定性和灵活性的方法。

官方文档可以说非常详细的介绍了整体架构,直接下载最新版文档进行配置

---性能

    吞吐量更高,延迟更低

   减少资源消耗

   最小化不必要的内存复制

   关于netty的jar包管理我们采用Gradle的方式进行管理,我们打开Gradle官网

初学Netty-Netty Helloword

Gradle构建工具类比Maven,也有相关的命令

./gradlew -v 版本号


./gradlew clean 清除9GAG/app目录下的build文件夹


./gradlew build 检查依赖并编译打包   


./gradlew assembleDebug 编译并打Debug包


./gradlew assembleRelease 编译并打Release的包

Maven常用:清理-编译-打包-部署等

初学Netty-Netty Helloword

我们这里进行安装包下载

点击

初学Netty-Netty Helloword

找到

初学Netty-Netty Helloword

这里有两个版本,

Binary-only

                             complete

                             个人建议下载conplete,包含所有的文档及jar包

解压后进行环境配置

IDEA引入配置

初学Netty-Netty Helloword                            

  选择:User local gradle distribution  找到目录F:\gradle-5.1.1

  选择Jdk版本

  新建一个项目,选择Gradle

  

初学Netty-Netty Helloword

  填入G-A-V,项目完成后会自动层级划分

 

初学Netty-Netty Helloword

  执行build命令

初学Netty-Netty Helloword

打开build.gradle 

初学Netty-Netty Helloword

增加依赖管理,系统会自动从mavenRepository进行下载 ;

mavenrepository官网:https://search.maven.org/

netty 基于socket 远程协议,长连接实现客户端与服务端的服务器,HTTP的服务器

netty 没有遵循Http的servlet规范

通道 channel  channelhandler  通道处理器(类似拦截器),管道  

所有的netty程序呢处理过程可以简单理解为

定义好父子线程组-->在childinitializer定义好相关处理通道处理器,处理器在回调函数写好

初学Netty-Netty Helloword

Java中创建线程一般是有1.5以前呢实现Runable接口,实现Thread类,1.5以后新加了实现Callable接口,或者从线程池中获取,这里的定义线程组可理解为创建接收客户端处理的线程组,区别于Thread

初学Netty-Netty Helloword

我们贴一下NioEventLoopGroup源码;

在这里bossGroup用于获取连接,然后交给work处理

ServerBootstrap  用于启动服务端的类

初学Netty-Netty Helloword

这里注意一下:

SocketChannel导包:import io.netty.channel.socket.SocketChannel;


设置响应头信息并相应,ctx.writeAndFlush(response)

初学Netty-Netty Helloword


这里呢将我们自己写的testserverInitializer添加进来

进行端口号绑定

然后try  finally关闭

初学Netty-Netty Helloword

启动程序


初学Netty-Netty Helloword

在linux环境下进行测试:

curl http://localhost:8080

返回字符串Hello world

但是控制台报错       


再次访问

  到此结束;

  参考视频https://www.bilibili.com/video/av35831927/?p=4观后整理


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《初学Netty-Netty Helloword》的版权归原作者「赵KK日常技术记录」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注赵KK日常技术记录微信公众号

赵KK日常技术记录微信公众号:gh_cc4c9f1a9521

赵KK日常技术记录

手机扫描上方二维码即可关注赵KK日常技术记录微信公众号

赵KK日常技术记录最新文章

精品公众号随机推荐