匠心零度 转载请注明原创出处,谢谢!

说在前面

上篇文章对Netty进行了初探:Netty初探,主要介绍了下我们为什么需要学习netty、netty介绍等;本篇文章接着上篇文章的内容。本篇为了方便大家快速入门、了解实践Netty特性、快速上手一个例子让大家有一个比较直接的认识。

主题

  • 版本选择及说明
  • 快速入门
  • 总结

版本选择及说明

版本的选择,这是一个很直接但是又经常需要面对的问题,特别是开源项目的时候,我们在选择版本的时候有很多考虑,比较jdk各个版本选择、zookeeper版本的选择、Tomcat版本选择,Spring系列版本选择等等,后续后空我们可以讨论讨论关于开源这些版本选择以及升级事宜交流,今天的重点是在netty版本的选择上面。

netty目前版本说明

目前Netty大版本就分为三个:3.x、4.x、5.x。
我们先看看官网怎么说:

备注:推荐使用的版本是4.x,那么我们再看看很多使用Netty的一些项目,的确使用的是4.x版本,据了解Dubbo3.x将会将Netty4.0.x升级到4.1.x版本。

看看官网:

备注:如果是在项目中进行使用那么我们可能会选择4.1.x的比如其他版本,需要考虑稳定性等,一般很少选择最新的,但是我们是来学习netty,那么我建议就选择最新版本:4.1.21.Final版本。,因为当我们学习完了之后,可能已经很久了,21版本估计也稳定了,并且都是4.1x版本,一般仅仅是一些小的改动,就算后面选择新版本学习应该也不是特别困难。

Netty4.1.x简单介绍

建议看官网New and noteworthy in 4.1http://netty.io/wiki/new-and-noteworthy-in-4.1.html),先了解下有那些大概的变动(不要认为之前没用过,看就没有必要,看看也是它的一些亮点,后续可能要重点学习了解思考的)

主要改变:

备注:具体详情记得去官网看看:http://netty.io/wiki/new-and-noteworthy-in-4.1.html,这次可以大概了解下,后续有空慢慢看看

快速入门

说了那么多了,我们来一个简单的Demo来简单的感受下Netty。

maven构建项目

新建一个Maven项目,之后去github上面找到netty对应的例子代码:

放到项目中,代码结构如图:

pom.xml中添加如下内容:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.21.Final</version>
</dependency>

稍微在原来demo基础上面修改了点东西,解决半包、黏包问题(后续详细介绍)
以及发送内容等信息。

我已经把代码提交到github上面去了,需要的小伙伴可以直接下载:https://github.com/lirenzuo/nettydemo

运行效果截图

可以与使用nio写的代码进行对比,NIO相关基础篇二,发现用Netty写一个TCP原来这么简单,都封装好了。

总结

使用Netty可以非常方便、快速的搭建网络开发环境,使得我们不用关心一些例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常码流的处理等等的问题,所以使用Netty进行网络开发是非常合适的,本篇只是一个入门,后续有了Demo可以跑起来的时候,进行断点啥的也好进行学习了。


如果读完觉得有收获的话,欢迎点赞、关注、加公众号【匠心零度】,查阅更多精彩历史!!!

Netty(一):入门篇的更多相关文章

  1. <Netty>(入门篇)TIP黏包/拆包问题原因及换行的初步解决之道

    熟悉TCP编程的读者可能都知道,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制.木章开始我们先简单介绍TCP粘包/拆包的基础知识,然后模拟一个没有考虑TCP ...

  2. netty深入学习之一: 入门篇

    netty深入学习之一: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java NI ...

  3. netty深入学习之中的一个: 入门篇

    netty深入学习之中的一个: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java ...

  4. (入门篇 NettyNIO开发指南)第三章-Netty入门应用

    作为Netty的第一个应用程序,我们依然以第2章的时间服务器为例进行开发,通过Netty版本的时间服务报的开发,让初学者尽快学到如何搭建Netty开发环境和!运行Netty应用程序. 如果你已经熟悉N ...

  5. Scala进阶之路-并发编程模型Akka入门篇

    Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...

  6. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  7. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  8. 1. web前端开发分享-css,js入门篇

    关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...

  9. 一个App完成入门篇(七)- 完成发现页面

    第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...

  10. [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界

    本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...

随机推荐

  1. Equals()和GetHashCode()方法深入了解

    最近在看Jeffrey Richter的CLR Via C#,在看到GetHashCode()方法的时候,有一个地方不是特别明白,就是重写Equals()方法时为什么要把GetHashCode()方法 ...

  2. parseInt原来是这样用的

    今天在群里无意中看到了这样一个问题,突然发现不会,结果运行一看,懵逼了,不知道为什么???(结果是啥?自己去试试看) 现在我们还是先来复习一下parseInt()这个知识点吧! parseInt() ...

  3. 阻止安卓实体返回键后退的网页js实现

    提供两种解决方法吧,都是网上来的,侵权删,毕竟我等只是搞后端的-- 第一种方法: // 阻止安卓实体键后退 // 页面载入时使用pushState插入一条历史记录 history.pushState( ...

  4. 访问网时出现403 Forbidden错误的原因:

    1.你的IP被列入黑名单.2.你在一定时间内过多地访问此网站(一般是用采集程序),被防火墙拒绝访问了.3.网站域名解析到了空间,但空间未绑定此域名.4.你的网页脚本文件在当前目录下没有执行权限.5.在 ...

  5. nginx https配置后无法访问,可能防火墙在捣鬼

    同事发现nginx配置后https 无法访问,我帮忙解决的时候从以下出发点 1.防火墙未开放443端口 2.配置出错 1 2 3 于是就 netstat -anp 查看防火墙开的端口 发现已经在监听了 ...

  6. PHP和Python如何选择?或许可以考虑这三个问题

    撤稿纠错 文/黄小天.李亚洲 (选自Hackernoon 机器之心编译) 2017 年可谓是网页应用与 API 之年,开发者不用每次重新发明轮子,而是利用脚手架和第三方库就能确保项目在几天内实时部署. ...

  7. dede列表标签list:应用大全 {dede:list}

    http://syizq.blog.163.com/blog/static/435700372011616115826329/ 标签名称: list 功能说明: 表示列表模板里的分页内容列表 适用范围 ...

  8. 邓_PHP面试【001】

    1.双引号和单引号的区别 双引号解释变量,单引号不解释变量 双引号里插入单引号,其中单引号里如果有变量的话,变量解释 双引号的变量名后面必须要有一个非数字.字母.下划线的特殊字符,或者用{}讲变量括起 ...

  9. Java常用的框架

    一.SpringMVC http://blog.csdn.net/evankaka/article/details/45501811 Spring Web MVC是一种基于Java的实现了Web MV ...

  10. get最简单直接粗爆git与github教程

    Git是分布式版本控制系统(可以理解为文件管理拓展工具) github一个在线文件托管系统(可以理解为一个在线云盘) 准备工作,在git官网下载git软件件,安装git软件,以windows.为例,下 ...