前言
不想多说什么,深刻的体会到学习方法的重要性,还有心态的问题,是否你能够沉得住气!耐的下心~这个过程感觉自己也是蛮拼的了~ 不过还好!终于让本姑娘有所收获了!!!
Netty宏观
如果最开始你去了解Netty你会发现真尼玛难!进程,线程,并发,NIo,IO,这么多鬼玩意。。。。首先我们先从宏观去来接他
What是Netty?
Netty是客户端于服务端进行通信的一个网络应用程序框架,他快速开发并且可以实现高性能协议和异步事件驱动。这些话是不是特别的高大尚啊~ 让我用一句大白话解决:他就是小明和小红两个人通过电话进行交流,并且这个过程中小红还可以让雪芬打电话。就是这么个玩意。。。
Netty来自哪?
Netty为什么现在这么好用并且这么流行,其实就是历史发展不断的更新不断的让我们程序员好干活~
Netty是jboss提供的一个jar包。这个jar包主要是针对的socket进行编程的。
1、IO:由于系统的扩大这个时候我们进行分模块话进行管理,然后使用RPC进行不同服务器之间远程通信,最开始的是时候我们使用的IO进行编程,但这种方式的编程也就是一个线程对应一个socket,并且是阻塞模式下的,阻塞的意思就是干这件事情的不能去做另外一件事情,所以非常的消耗资源。由于这些原因我们开发了另一种叫做NIO
2、NIO:NIO的重点突出就是在非阻塞下进行通信,他再设计上进行了优化,一个线程可以select选择多个socket,所以这个时候就方便了很多,但是出现了另一种问题,就是NIO从实质上并没有解决高并发的问题,所以这个时候Netty就出现了
3、Netty:Netty是基于NIO,他可以自己扩展自己的协议,并且是一个高并发的客户端和服务端的一个框架
NIO是面向缓冲区的,IO是面向的数据流
IO形式
NIO形式
同类技术?
同类技术处了是NIO,还有一个比Netty出现早的框架Mina框架
使用Netty的好处?
他简化网络应用的编程过程开发,例如UDP和TCP的socket服务开发,他功能比较强大,并且提供了编码好解码的能力,并且很多著名的框架都是底层采用Netty,比如Dubbo,服务提供者和消费者之间的通信。淘宝的消息中间件 RocketMQ 的消息生产者和消息消费者之间
- 易用性好
- 性能好
- 健壮性好
- 安全性好
UDP协议实战
这个Demo我大概研究了3天的时间,中途的时候有坚持不住的感觉,实在是没有接触过!但是通过我不懈努力,让我给搞定了!!!!!
我们项目主要是针对的是服务端,但是由于设备还没有下来得原因我只能自己模拟客户端,然后让他们直接进行通信,首先看服务端。
服务端
首先说一下大体的过程
1有一个boostrap服务者
2有两个干活的,也就是处理IO的,一个是boss用于监听端口,一个work干活的
3配置UDP管道,UDP管道主要使用的是NioDatagramChannel
4然后使用pipeline进行配置,可以实现编码和解码等功能,然后寻找到我们的执行的处理的Handler类
5配置我们的服务,例如选择是广播和单播,读和写缓存
6绑定端口,获取通道
7优雅的关闭服务器
/**
* 服务监听、初始化类
* */
public class