Netty学习摘记 —— UDP广播事件】的更多相关文章

本文参考 本篇文章是对<Netty In Action>一书第十三章"使用UDP广播事件"的学习摘记,主要内容为广播应用程序的开发 消息POJO 我们将日志信息封装成名为LogEvent的POJO public final class LogEvent {   public static final byte SEPARATOR = (byte) ':';   private final InetSocketAddress source;   private final S…
一.前言 前面学习了WebSocket协议,并且通过示例讲解了WebSocket的具体使用,接着学习如何使用无连接的UDP来广播事件. 二.UDP广播事件 2.1 UDP基础 面向连接的TCP协议管理端到端的连接,在连接生命周期中,发送的消息会有序并且可靠地进行传输,最后连接有序地终止.然而,在无连接协议(如UDP)中,没有持久连接的概念,每个消息(UDP数据报)都是独立的传输,此外,UDP没有TCP的纠错机制(即每个对等体会确认其接收到的分组,并且发送者会重传未确认的分组). UDP的限制比T…
本文参考 我在博客内关于"Netty学习摘记"的系列文章主要是对<Netty in action>一书的学习摘记,文章中的代码也大多来自此书的github仓库,加上了一部分我自己的注释内容.之所以开始对Netty的学习,是因为在高并发网络编程和大数据生态圈都有它活跃的身影,例如Cassandra.ElasticSearch.Spark和ZooKeeper中就有Netty框架的应用,便对它产生了兴趣,若要再说的实际一点,面试官也很有可能问网络高并发和关于netty的东东呢 本…
1.UDP的基础知识 我们将会把重点放在一个无连接协议即用户数据报协议(UDP)上,它通常用在性能至关重要并且能够容忍一定的数据报丢失的情况下. 面向连接的传输(如TCP)管理了两个网络端点之间的连接的建立,在连接的生命周期内的有序和可靠的消息传输,以及最后,连接的有序终止.相比之下,在类似于UDP这样的无连接协议中,并没有持久化连接这样的概念,并且每个消息(一个UDP数据报)都是一个单独的传输单元. 此外,UDP也没有TCP的纠错机制,其中每个节点都将确认它们所接收到的包,而没有被确认的包将会…
本文参考 本篇文章是对<Netty In Action>一书第十二章"WebSocket"的学习摘记,主要内容为开发一个基于广播的WEB聊天室 聊天室工作过程 请求的 URL 以/ws 结尾时,通过升级握手的机制把该协议升级为 WebSocket,之后客户端发送一个消息,这个消息会被广播到所有其它连接的客户端 当有新的客户端连入时,其它客户端也能得到通知 处理HTTP请求 首先实现该处理 HTTP 请求的组件,当请求的url没有指定的WebSocket连接的后缀时(如后缀/…
本文参考 本篇文章是对<Netty In Action>一书第八章"引导"的学习摘记,主要内容为引导客户端和服务端.从channel内引导客户端.添加ChannelHandler和使用ChanneOption 引导类层次结构 服务端ServerBootstrap和客户端Bootstrap都继承和实现了抽象类AbstractBootstrap 抽象类AbstractBootstrap实现了Cloneable接口,当需要创建多个具有类似配置或者完全相同配置的Channel时,不…
本文参考 本篇文章是对<Netty In Action>一书第十一章"预置的ChannelHandler和编解码器"的学习摘记,主要内容为通过 SSL/TLS 保护 Netty 应用程序.构建基于 Netty 的 HTTP/HTTPS 和websocket应用程序.处理空闲的连接和超时.解码基于分隔符的协议和基于长度的协议.写大型数据 本篇先摘记后三块内容 -- 处理空闲的连接和超时.解码基于分隔符的协议和基于长度的协议.写大型数据 空闲的连接和超时 Netty提供了Idl…
本文参考 本篇文章是对<Netty In Action>一书第十一章"预置的ChannelHandler和编解码器"的学习摘记,主要内容为通过 SSL/TLS 保护 Netty 应用程序.构建基于 Netty 的 HTTP/HTTPS 和websocket应用程序.处理空闲的连接和超时.解码基于分隔符的协议和基于长度的协议.写大型数据 本篇先摘记前两块内容 -- 通过 SSL/TLS 保护 Netty 应用程序.构建基于 Netty 的 HTTP/HTTPS 和WebSoc…
本文参考 本篇文章是对<Netty In Action>一书第十章"编解码器框架"的学习摘记,主要内容为解码器和编码器 编解码器实际上是一种特殊的ChannelHandler,并被加入到ChannelPipline中 解码器ByteToMessageDecoder decodes bytes in a stream-like fashion from one ByteBuf to an other Message type 抽象基类ByteToMessageDecoder将…
本文参考 本篇文章是对<Netty In Action>一书第七章"EventLoop和线程模型"的学习摘记,主要内容为线程模型的概述.事件循环的概念和实现.任务调度和实现细节 线程模型概述 线程模型指定了操作系统.编程语言.框架或者应用程序的上下文中的线程管理的关键方面.可见,线程模型确定了代码的执行方式,如何以及何时创建线程将对应用程序代码的执行产生显著的影响,因此开发人员需要理解与权衡不同的模型 在早期的 Java 语言中,我们使用多线程处理的主要方式无非是按需创建和…