专题分类
一起学netty
0
997
基于javanio+netty+websocket+protobuf+javascript等技术实现前后端高性能实时数据传输的demo模型。 github地址:https://github.com/18438301593/NettyWebsocketProtoDemo主要过程分析:一、.proto文件编写,生成java类,以及javacript文件。 参考文章: http://www.j
![](http://photo.jiajiajia.club/weblog/2021-11-16/6883ceac-b8dd-4c98-91bf-3a9e75f94a6d.png)
0
793
什么是心跳?顾名思义,所谓心跳,即在TCP长连接中,客户端和服务器之间定期发送的一种特殊的数据包,通知对方自己还在线,以确保TCP连接的有效性。为什么需要心跳?因为网络的不可靠性,有可能在TCP保持长连接的过程中,由于某些突发情况,例如网线被拔出,突然掉电等,会造成服务器和客户端的连接中断.在这些突发情况下,如果恰好服务器和客户端之间没有交互的话,那么它们是不能在短时间内发现对方已经掉线的.为了解
![](http://photo.jiajiajia.club/weblog/2021-09-17/2a67bd84-2516-4d49-86e8-f40a70ee0096.png)
0
853
之前的文章介绍了protobuf的概念参考:http://www.jiajiajia.club/blog/artical/351psy9r6l0g/464以及protobuf的编码方式参考:http://www.jiajiajia.club/blog/artical/5puo1goygd3o/463proto文件准备Animal.protosyntax="proto3";import"Dog.pr
![](http://photo.jiajiajia.club/weblog/2021-09-15/430d5ea9-1771-4496-86ff-2689cdcb0360.png)
0
790
Websocket协议和http协议的关系websocket是基于TCP的一个应用协议,与HTTP协议的关联之处在于websocket的握手数据被HTTP服务器当作HTTP包来处理,主要通过UpdaterequestHTTP包建立起连接,之后的通信全部使用websocket自己的协议,就和http没啥关系了。有兴趣的同学可以多了解一下websocket协议报文的详细信息。Netty实现websoc
0
803
什么是网络协议?网络协议就是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。有了网络协议才能实现不同设备、不同操作系统、不同软件之间的数据交换。我们常说的tcp协议和udp协议其实是操作系统级别的底层协议(传输层)。很多的应用层的协议都是基于tcp协议或udp协议来实现的,比如FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3
0
573
ChannelOption的各种属性在套接字选项中都有对应。1、ChannelOption.SO_BACKLOGChannelOption.SO_BACKLOG对应的是tcp/ip协议listen函数中的backlog参数。函数listen(intsocketfd,intbacklog)用来初始化服务端可连接队列。服务端处理客户端连接请求是顺序处理的,所以同一时间只能处理一个客户端连接,多个客户端
![](http://photo.jiajiajia.club/weblog/2021-09-13/adbb70c7-6692-4af1-b097-a82b61250ea2.png)
0
841
粘包和拆包产生粘包和拆包问题的主要原因是,操作系统在发送TCP数据的时候,底层会有一个缓冲区,例如1024个字节大小,如果一次请求发送的数据量比较小,没达到缓冲区大小,TCP则会将多个请求合并为同一个请求进行发送,这就形成了粘包问题;如果一次请求发送的数据量比较大,超过了缓冲区大小,TCP就会将其拆分为多次发送,这就是拆包,也就是将一个大的包拆分为多个小包进行发送。1.上图中演示了粘包和拆包的三种
![](http://photo.jiajiajia.club/weblog/2021-08-16/e3445a58-cc8c-4533-884a-18403e2fb225.png)
0
1052
编码器和解码器在网络应用中需要实现某种编解码器,将原始字节数据与自定义的消息对象进行互相转换。网络中都是以字节码的数据形式来传输数据的,服务器编码数据后发送到客户端,客户端需要对数据进行解码。netty提供了强大的编解码器框架,使得我们编写自定义的编解码器很容易,也容易封装重用。对于Netty而言,编解码器由两部分组成:编码器、解码器。解码器:负责将消息从字节或其他序列形式转成指定的消息对象。编码
![](http://photo.jiajiajia.club/weblog/2021-08-15/7a28b439-03de-4fbe-9425-743aa940c03a.png)
0
704
ChannelInboundHandlerChannelInboundHandler是入栈消息处理的核心接口,如下:publicinterfaceChannelInboundHandlerextendsChannelHandler{voidchannelRegistered(ChannelHandlerContextvar1)throwsException;voidchannelUnregiste
![](http://photo.jiajiajia.club/weblog/2021-08-10/9f130d61-8de6-4d41-a31d-dea9c05a8b50.png)
0
1009
ChannelHandler用来处理Channel上的各种事件(包括建立连接,数据收发,异常处理等)ChannelHandler分为出站和入栈两种。所有的ChannelHandler被连接成一串,就是一个Pipeline。入栈处理器通常是ChannelInboundHandlerAdapter的子类,主要用于读取和处理客户端的数据。(包括数据包解码,业务逻辑处理等)出栈处理器通常是ChannelO
![](http://photo.jiajiajia.club/weblog/2021-08-08/698a1bb6-96df-49c8-be5a-6d3a0ab3d125.png)
{{data.type}}
{{data.createTime}}
{{data.praise}}
{{data.viewNum}}
{{data.description}}
今日推荐
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。