
netty 开源框架
文章平均质量分 63
在奋斗的大道
程序发烧友
展开
-
Netty心跳协议添加重连机制
Netty Client有两种情况下需要重连: Netty Client启动的时候需要重连 Netty Client在程序运行中连接断掉需要重连。 针对 Netty Client 启动时需要重连解决办法: Netty Client 的ChannelFuture实现ChannelFutureListener 用来启动时监测是否连接成功,不成功的话重试Netty Client 源码:package com.netty.client.four;import java.util.c原创 2021-01-06 15:15:32 · 556 阅读 · 0 评论 -
Netty 实现简单心跳机制
一、计算机网络通信之心跳概念网络中的接收和发送数据都是使用操作系统中的SOCKET进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。可是如何判断这个套接字是否还可以使用呢?这个就需要在系统中创建心跳机制。其实TCP中已经为我们实现了一个叫做心跳的机制。如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是3秒钟)内发送你设置的次数的心跳(比如说2次),并且此信息不会影响你自己定义的协议。所谓“心跳”就是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着。 以确保链接原创 2021-01-05 10:26:44 · 3031 阅读 · 0 评论 -
Netty 集成google ProtoBuf 开发私有协议 之实战开发
本文基于Netty 集成google ProtoBuf 开发私有协议,进行实战功能开发第一步:新建自定义协议文本对象User.protosyntax = "proto3";//生成的包名,此处根据实际来修改option java_package = "com.netty.protobuf";//类名option java_outer_classname="UserInfo";message UserMsg{ int32 id=1; string name=2; int32原创 2021-01-04 18:05:46 · 501 阅读 · 0 评论 -
Netty 集成google ProtoBuf 开发私有协议
ProtoBuf简介protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。官网地址:https:/原创 2021-01-04 17:35:14 · 369 阅读 · 0 评论 -
java nio 基础之Select 用法
本文参考至Java Nio 基础教程Select (选择器)是Java Nio中能够检测一个到多个通道,并能够知道是否为诸如读写事件做好准备的组件。这样,一个单独的线程就可以管理多个channel,从而管理多个网络连接。为什么需要使用Select ?仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事实上,可以只用一个线程处理所有的原创 2017-06-04 17:24:37 · 8752 阅读 · 0 评论 -
Netty 学习笔记一、Hello Netty
Netty客户端和服务器概述本节将引导你构建一个完整的Netty服务器和客户端。一般情况下,你可能只关心编写服务器,如一个http服务器的客户端是浏览器。然后在这个例子中,你若同时实现了服务器和客户端,你将会对他们的原理更加清晰。 一个Netty程序的工作图如下客户端连接到服务器建立连接后,发送或接收数据服务器处理所有的客户端连接原创 2017-06-04 22:46:59 · 635 阅读 · 0 评论 -
Netty 学习笔记之二 Netty 核心概念
本文转载至:http://blog.youkuaiyun.com/abc_key/article/details/37672187在这一章我们将讨论Netty的10个核心类,清楚了解他们的结构对使用Netty很有用。可能有一些不会再工作中用到,但是也有一些很常用也很核心,你会遇到。Bootstrap or ServerBootstrapEventLoopEventLoopG转载 2017-06-04 22:53:40 · 1313 阅读 · 0 评论 -
java nio 基础
java nio 三大核心组件:Buffers;Channels;Selectors;Channels 和Buffers 的关系:基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。这里有个图示JavaNio Channel通道原创 2017-06-03 17:04:37 · 676 阅读 · 0 评论 -
java nio 基础之Buffer 用法
java nio Buffer的本质是“数据通过通道写入缓存区中,从缓存中读取数据到通道中”。总结Buffer 基本用法(本段参考至:Java NIO系列教程(三)Buffer)1、写入数据到Buffer2、调用filp(),实现读取模式和写入模式切换3、读取Buffer 数据4、调用clear()或者compact()方法,清理已经读取的相关信息。对于以原创 2017-06-04 02:51:05 · 1608 阅读 · 0 评论 -
Netty权威指南之私有协议栈开发
相关知识点:通信协议从广义区分,可以分为公有制协议和私有协议。由于私有协议的灵活性,它往往会在某个公司或组织内部使用,按需定制,也因为如此,升级起来会非常方便,灵活性好。绝大多数的私有协议传输层都基于TCP/IP,所以利用Netty的NIO TCP协议栈可以非常方便的进行私有协议的定制和开发。本章学习目标:1、私有协议介绍2、基于Netty的私有栈设计3、私有协原创 2015-07-02 16:20:24 · 2286 阅读 · 2 评论 -
Netty 权威指南之UDP 协议开发
本章相关知识点:UDP是用户数据报协议(User Datagrame Protocol,UDP)的简称,其主要作用是将网络数据流量压缩成数据报形式,提供面向事务的简单信息传送服务。与TCP协议不同,UD协议直接利用IP协议进行UDP数据报的传输,UDP提供的是 面向无连接的,不可靠的数据报投递服务。当使用UDP协议传输信息时,用户应用程序必须负责解决数据包丢失、重复、排序,差错确认等问题。原创 2015-06-25 16:33:11 · 3453 阅读 · 0 评论 -
Netty权威指南之TCP粘包和拆包
本章节需要学习的内容如下:1、TCP粘包和拆包基础知识。2、TCP粘包和拆包异常案例3、Netty 解决半包问题。第一节:TCP粘包和拆包基础知识TCP粘包和拆包问题产生原因?TCP协议本质上就是个“流”协议,就是没有界限的一串数据。大家可以想象河里的水,是连成一片,期间没有分界线。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分原创 2015-06-21 14:11:15 · 1206 阅读 · 0 评论 -
Netty权威指南之Netty入门应用
本章节需要学习的内容如下:1、Netty开发环境搭建2、服务端程序开发NettyServer3、客户端程序开发NettyClient第一节:Netty开发环境搭建(1)、访问Netty的官网http://netty.io,从【Download】标签页下载netty-5.0.0.Alpha2.tar.bz2安装包,安装包不大,14.6M左右。下载完成后,如下截图:原创 2015-06-21 11:37:46 · 1653 阅读 · 1 评论 -
Netty权威指南之分隔符和定长解码器
本章需要学习的内容如下:1、DelimiterBasedFrameDecode服务端开发2、DelimiterBasedFreamDecode客户端开发3、运行DelimiterBasedFreamDecode服务端和客户端4、FixedLengthFrameDecoder服务端开发5、通过telnet 命令调试FixedLengthFrameDecode 服务端原创 2015-06-22 17:42:14 · 1418 阅读 · 0 评论 -
Netty 权威指南之java 序列化
本章相关知识点:相信大多数的程序员接触到的第一种序列化或者编码技术是Java序列化,需要实现序列化的POJO对象只需要实现java.io.serlizable接口,根据实际情况生成序列ID,这个类就能通过java.io.ObjectInput 和java.io.ObjectOutput序列化和反序列化。不需要考虑跨语言调用,对序列化性能没有苛刻的要求,Java默认写序列化机制是最好的选择,原创 2015-06-23 17:08:06 · 954 阅读 · 0 评论 -
Netty 权威指南之Google protobuf 编解码
本章相关知识点:Google 的protobuf 在业界非常流行,很多的商业项目选址使用protobuf作为编解码框架,这里一起回顾一下protobuf 框架的优点:1、结构化数据存储(类似XML和JSON)2、高效编码性能3、语言无法、平台无法、拓展性好4、官方支持Java、C++和Python本章学习目标:1、Protob原创 2015-06-24 11:18:01 · 1968 阅读 · 0 评论 -
Netty权威指南之编码和解码技术
相关知识补充:基于Java提供的对象输入和对象输出流ObjectInputStream和ObjectOutputStream,可以直接把Java对象作为可存储字节数组写入文件,也可以上传网络。Java序列化的目的主要有两个:1、网络传输2、对象持久化本章节主要介绍Netty的NIO网络开发,所以我们重点关注网络传输。当进行远程跨进程服务调用时,需要把被传输的Java对象转化为字原创 2015-06-23 15:43:13 · 1076 阅读 · 1 评论 -
Netty权威指南之文件传输
本章相关知识点:文件是最常见的数据源之一,在程序经常需要将数据存储到文件中,比如:图片文件、声音文件等数据文件。在实际使用中,文件都包含一个特定的格式,这个格式需要程序员根据需求进行设计。读取已有文件是需要熟悉对应文件格式,才能把数据从文件中正确的读取出来。在NIO类库提供之前,Java所以的文件操作分为两大类:1、基于字节流的InputStream和OutputStram;2、基原创 2015-06-25 17:32:32 · 2327 阅读 · 0 评论 -
Netty权威指南之Websocket协议开发
本章主要学习内容如下:1、HTTP协议弊端2、WebSocket入门3、Netty WebSocket协议开发第一节:HTTP协议弊端将HTTP协议的主要弊端总结如下:1、HTTP协议为半双工协议。半双工协议指数据可以在客户端和服务端两个方向上传输,但不能同时传输。它意味着在同一时刻,只有一个方向上的数据传输。2、HTTP消息繁琐。HTTP消息包含消息头、消息体原创 2015-06-25 15:35:49 · 2323 阅读 · 0 评论 -
Netty权威指南之NIO入门
本章学习目标:1、传统的同步阻塞式IO编程2、基于NIO非阻塞式编程3、基于NIO2.0异步非阻塞式编程4、为什么使用NIO编程5、为什么选择Netty传统BIO编程网络编程的基本模式是C/S模式,也就是两个进程之间的相互通信,其中服务端提供位置信息(绑定IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请求,通过三次握手建立连接,如果连接成功,原创 2015-06-19 02:40:30 · 810 阅读 · 0 评论