
netty
Vencent Kim
好好的活,记录每一份情感和想法,每一个行为,并思考为什么,不断优化自己
展开
-
2、编解码、序列化、Google Protobuf编解码
Java的序列化Java提供的序列化机制,涉及到两个对象输入输出流类,ObjectInputStream,ObjectOutputStream。Java序列化的目的是网络传输和对象持久化。序列化,在网络传输中,将Java对象编码为字节数组或者ByteBuffer对象反序列化,将从远程服务读取到的ByteBuffer对象或者字节数组解码为Java对象。Java序列化的缺点:1...原创 2019-01-23 22:20:16 · 1068 阅读 · 0 评论 -
Netty入门到精通
系统的学习Netty,以源码实战为主,主要参考《Netty权威指南第2版》学习,学习目的是掌握Netty网络开发。源码参考,源码基于4.1.31.Final版本。0、一个基本的Netty客户端和服务端程序1、解决TCP粘包拆包问题,几种编解码器的应用2、编解码、序列化、Google Protobuf编解码3、Netty HTTP协议开发4、WebSocket协议开发5、...原创 2019-01-20 11:57:35 · 1277 阅读 · 0 评论 -
0、一个基本的Netty客户端和服务端程序
前言(可跳过)我觉的学习一个新技术,最开始的开始不是看什么概念,而是直接撸示例代码。在看概念性的内容和实践中找到一种平衡,不要一直连续看概念性的内容,也不要只是埋在代码里。1、自己debug看看,把代码运行的流程仔细的看看,每一行,每一个陌生的类型和方法签名。如果示例代码给的好,让你可以运行,然后debug起来,就已经入门了。2、接着就是看一些其他的特性,对关键的特性或者你感兴趣的...原创 2019-01-20 21:54:24 · 950 阅读 · 0 评论 -
3、Netty HTTP协议开发
关于HTTP的介绍,参见HTTP协议介绍FileServer应用开发Netty HTTP服务端开发:public class HttpFileServer { private static final String DEFAULT_URL = "/src/main/java/com/kim/"; private static String ip = "10.200...原创 2019-01-25 13:32:44 · 774 阅读 · 1 评论 -
1、解决TCP粘包拆包问题,几种编解码器的应用
粘包拆包问题粘包拆包问题是基于流的协议所特有的,因为基于流的协议不知道传输的内容是什么。TCP协议是一个基于流的协议,一个完整的数据包可能会被TCP拆分成多个包发送,也有可能多个小的数据包被封装成一个大包发送。什么决定了拆包规则?粘包拆包的原因是什么? 粘包:服务端一次接收了多个包,这些包粘合在一起拆包:服务端接收到某个包的一部分内容 很显然,粘包拆包是对业务处理端...原创 2019-01-21 19:57:56 · 617 阅读 · 0 评论 -
4、WebSocket协议开发
概述:HTTP通信是客户端控制的一请求一应答模式。不适用低延迟应用。如果有新数据可用时,立即将数据发送到客户端。需要通过长轮询等方式实现。 而WebSocket将网络套接字引入客户端和服务端,浏览器和服务器可以通过套接字建立持久的连接,双方随时都可以互发数据给对方。HTTP协议的弊端(1)半双工协议。数据可以在客户端和服务端两个方向上传输,但是同一时刻,只有一个方向上的...原创 2019-01-29 10:55:08 · 443 阅读 · 0 评论 -
5、私有协议开发
协议栈功能概述1、异步通信,基于Netty的NIO2、提供消息的编解码3、提供基于IP地址的白名单接入认证机制4、链路的有效性校验机制5、链路的断连重连机制通信模型1、客户端发送握手请求消息,携带节点ID等有效身份认证信息2、服务端对握手请求消息进行合法性校验,包括节点ID有效性校验、节点重复登录校验和IP合法性校验,校验通过后,返回登录成功的握手应答消息3...原创 2019-01-29 15:17:49 · 3822 阅读 · 0 评论