zhizhesoft

  • 首页
Netty
Java

Netty使用解码器Decoder解决TCP粘包和拆包问题

解码器Decoder和ChannelHandler的关系 netty的解码器通常是继承自ByteToMessageDecoder,而它又是继承自ChannelInboundHandlerAdapter,其实也是一种ChannelHandler和我们自定义的ChannelHandler一样都是来处理进入或者出去的数据。常用的几种解码器有: LineBasedFrameDecoder DelimiterBasedFrameDecoder FixedLengthFrameDecoder LineBasedFrameDec…

2019年8月19日 0条评论 34点热度 0人点赞 risingsun 阅读全文
Google Protocol Buffer

Netty使用Google Protocol Buffer完成服务器高性能数据传输

一、什么是Google Protocol Buffer(protobuf官方网站) 下面是官网给的解释: Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data. – think XML, but smaller, faster, and simpler. 协议缓冲区是一种和语言无关、平台无关的可扩展机制,用于序列化结构化的数据。相比于xml,它更小,…

2019年8月19日 0条评论 16点热度 0人点赞 risingsun 阅读全文
Java

Netty 客户端使用指数退避机制实现重连

指数退避 可以理解为每次重连失败时,就把重连时间设置为之前的指数级别。例如 2 秒,4 秒,8 秒...... 亚马逊AWS关于指数退避的两篇文章介绍 AWS 中的错误重试和指数退避 Exponential Backoff And Jitter Netty客户端中使用指数退避方式重连 客户端连接服务器时,调用 Bootstrap 的 connect 方法: bootstrap.connect(host, port) 这个方法会返回 ChannelFuture ,ChannelFuture 实现了 netty 的 F…

2019年8月19日 0条评论 18点热度 0人点赞 risingsun 阅读全文
02架构设计

通过Netty、WebSocket实现服务端和客户端长连接的一种方法

WebSocket与Http、Socket的区别和联系 WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。 WebSocket与HTTP的关系 相同点 都是一样基于TCP的,都是可靠性传输协议。 都是应用层协议。 不同点 WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。HTTP是单向的。 WebSocket是需要握手进行建立连接的。 联系 WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HT…

2019年7月7日 0条评论 29点热度 0人点赞 risingsun 阅读全文
05Java网络IO

Linux 网络 I/O 模型简介(图文)

1、介绍     Linux 的内核将所有外部设备都看做一个文件来操作(一切皆文件),对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符)。而对一个socket的读写也会有响应的描述符,称为socket fd(socket文件描述符),描述符就是一个数字,指向内核中的一个结构体(文件路径,数据区等一些属性)。     根据UNIX网络编程对I/O模型的分类,UNIX提供了5种I/O模型。     1.1、阻塞I/O模型     最常用的I/O模型,默认情况下,所有…

2019年7月7日 0条评论 20点热度 0人点赞 risingsun 阅读全文
05Java网络IO

Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)

1、BIO编程     1.1、传统的BIO编程     网络编程的基本模型是C/S模型,即两个进程间的通信。     服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字进行通信。     传统的同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听端口;Socket负责发起连接操作。连接成功后,双方通过输入和输出流进行同步阻塞式通信。      简单的描述一下BIO的服务端通信模型:采用BIO通信模型的服务端,通常由…

2019年7月7日 0条评论 0点热度 0人点赞 risingsun 阅读全文
Netty

netty-1.从一个最简单的例子开始

(原) 第一篇,从一个最简单的例子开始 1、netty是干什么,怎么用,这里不作介绍,先从一个例子来了解它, netty 5.0以上的版本被废弃了,以下例子从4.1.10.Final版本开始。 2、一共3个类 1> TestServer 用于启动服务,这里有二个EventLoopGroup,bossGroup和workerGroup,bossGroup接收来自客户端的请求,然后将这些请求再转交给workerGroup处理。 2> TestServerInitializer 服务端初始化,用于收集客户端数…

2019年7月5日 0条评论 29点热度 0人点赞 risingsun 阅读全文
Netty

netty-2.客户端与服务端互发消息

(原) 第二篇,客户端与服务端互发消息 与第一篇的例子类似,这里服务端需要三个类,客户端也需要三个类。 服务端关键代码如下:MyServer与上一个例子中的TestServer 差多,这里只列举不同的地方。   通过MyServerHandler能看到,服务端收到消息后会向客户端发送一个UUID。 客户端代码如下: 这里能看到与服务端最明显的区别就是只有一个EventLoopGroup,用于连接类是bootstrap,不是serverBootStrap。   通过MyClientHandler可以看到,当连接成功以…

2019年7月5日 0条评论 25点热度 0人点赞 risingsun 阅读全文
Netty

netty-3.客户端与服务端通信

(原) 第三篇,客户端与服务端通信 以下例子逻辑: 如果客户端连上服务端,服务端控制台就显示,XXX个客户端地址连接上线。 第一个客户端连接成功后,客户端控制台不显示信息,再有其它客户端再连接上线,则其它客户端显示:【服务器】 - XXX 已加入 当客户端发送一条消息给服务端,其它客户端控制台都能收到此消息【服务端】 - xxx msg,同时自己也会收到一条消息,【服务端】 - 【自己】 msg 服务端ChannelInitializer和SimpleChannelInboundHandler实现为: 这里的cha…

2019年7月5日 0条评论 21点热度 0人点赞 risingsun 阅读全文
Netty

netty-4.客户端与服务端心跳

(原) 第四篇,客户端与服务端心跳 心跳事件有三种,读空闲,写空闲,读写空闲,定义在了IdleState枚举类中,分别为READER_IDLE,WRITER_IDLE,ALL_IDLE   服务端: main方法与之前的例子差不多,只不过多了加了一个日志,其中,handler是用于处理bossGroup的handler,而childHandler是用于处理workerGroup的handler。 这里IdleStateHandler接收三个参数,分别是读超时时间,写超时时间,读写超时时间   这个handler继承…

2019年7月5日 0条评论 22点热度 0人点赞 risingsun 阅读全文
1…5253545556
Search

COPYRIGHT © 2022 zhizhesoft. ALL RIGHTS RESERVED.