zhizhesoft

  • 首页
Netty
Java

Netty writeAndFlush() 流程与异步

Netty writeAndFlush()方法分为两步, 先 write 再 flush @Override public ChannelFuture writeAndFlush(Object msg, ChannelPromise promise) { DefaultChannelHandlerContext next; next = findContextOutbound(MASK_WRITE); ReferenceCountUtil.touch(msg, next); next.invoker.invokeW…

2022年4月15日 0条评论 27点热度 0人点赞 risingsun 阅读全文
Netty

Netty专题(三)-----nio实现群聊系统、零拷贝

nio实现群聊系统 实例要求 1) 编写一个 NIO 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞) 2) 实现多人群聊 3) 服务器端:可以监测用户上线,离线,并实现消息转发功能 4) 客户端:通过 channel 可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发 得到) 示意图分析   代码 1、服务端 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteB…

2022年3月10日 0条评论 27点热度 0人点赞 risingsun 阅读全文
Netty

Netty专题(六)-----netty群聊系统应用、netty心跳检测应用

netty群聊系统 实例要求 1) 编写一个 Netty 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞) 2) 实现多人群聊 3) 服务器端:可以监测用户上线,离线,并实现消息转发功能 4) 客户端:通过 channel 可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发 得到) 服务端 1、GroupChatServer package com.atguigu.netty.groupchat; import io.netty.bootstrap.ServerBootstra…

2022年3月10日 0条评论 20点热度 0人点赞 risingsun 阅读全文
Netty

Netty专题(五)-----Bootstrap、ByteBuf、编码解码

引导Bootstrap 我们把前面的用例称作引导一个服务器,后面的用例称作引导一个客户端。虽然这个术语简单方便,但是它略微掩盖了一个重要的事实,即“服务器”和“客户端”实际上表示了不同的网络行为;换句话说,是监听传入的连接还是建立到一个或者多个进程的连接。因此,有两种类型的引导:一种用于 客户端(简单地称为Bootstrap),而另一种(ServerBootstrap)用于服务器。无论你的应用程序使用哪种协议或者处理哪种类型的数据,唯一决定它使用哪种引导类的是它是作为一个客户端还是作为一个服务器。 比较Bootst…

2022年3月10日 0条评论 17点热度 0人点赞 risingsun 阅读全文
Netty

Netty专题(一)-----计算机网络、TCP/ICP、linux网络I/O模型

计算机网络体系结构 开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。其目的是为异种计算机互连提供一个共同的基础和标准框架,并为保持相关标准的一致性和兼容性提供共同的参考。这里所说的开放系统,实质上指的是遵循OSI参考模型和相关协议能够实现互连的具有各种应用目的的计算机系统。OSI采用了分层的结构化技术,共分七层,物理层、数据链路层、网络层…

2022年3月10日 0条评论 27点热度 0人点赞 risingsun 阅读全文
Netty

Netty专题(二)-----原生JDK网络编程

原生JDK网络编程 网络编程里通用常识 既然是通信,那么是肯定是有两个对端的。在通信编程里提供服务的叫服务端,连接服务端使用服务的叫客户端。在开发过程中,如果类的名字有Server或者ServerSocket的,表示这个类是给服务端用的,如果类的名字只有Socket的,那么表示这是负责具体的网络读写的。那么对于服务端来说ServerSocket就只是个场所,具体和客户端沟通的还是一个一个的socket,所以在通信编程里,ServerSocket并不负责具体的网络读写,ServerSocket就只是负责接收客户端连接…

2022年3月10日 0条评论 20点热度 0人点赞 risingsun 阅读全文
Netty

Netty专题(四)-----Netty介绍、Netty组件介绍

Netty是什么?为什么要用Netty? 介绍 Netty是由JBOSS提供的一个java开源框架。 Netty提供异步的、事件驱动的网络应用程序框架和工具, 用以快速开发高性能、高可靠性的网络服务器和客户端程序。 为什么要用Netty 1、虽然JAVA NIO框架提供了 多路复用IO的支持,但是并没有提供上层“信息格式”的良好封装。例如前两者并没有提供针对 Protocol Buffer、JSON这些信息格式的封装,但是Netty框架提供了这些数据格式封装(基于责任链模式的编码和解码功能); 2、直接使用NIO需…

2022年3月10日 0条评论 19点热度 0人点赞 risingsun 阅读全文
Netty

Netty学习笔记(一) - 简介和组件设计

在互联网发达的今天,网络已经深入到生活的方方面面,一个高效、性能可靠的网络通信已经成为一个重要的诉求,在Java方面需要寻求一种高性能网络编程的实践。 一、简介 当前JDK(本文使用的JDK 1.8)中已经有网络编程相关的API,使用过程中或多或少会存在以下几个问题: 阻塞:早期JDK里的API是用阻塞式的实现方式,在读写数据调用时数据还没有准备好,或者目前不可写,操作就会被阻塞直到数据准备好或目标可写为止。虽然可以采用每一个连接创建一个线程进行处理,但是可能会造成大量线程得不到释放,消耗资源。从JDK 1.4开始…

2022年3月3日 0条评论 22点热度 0人点赞 risingsun 阅读全文
Netty

Netty学习笔记(二) - ChannelPipeline和ChannelHandler

ChannelPipeline 和 ChannelHandler 是 Netty 重要的组件之一,通过这篇文章,重点了解这些组件是如何驱动数据流动和处理的。 一、ChannelHandler 在上一篇的整体架构图里可以看到,ChannelHandler 负责处理入站和出站的数据。对于入站和出站,ChannelHandler 由不同类型的 Handler 进行处理。下面通过一个示例来演示,将上一篇文章里的 Demo 做一些修改: 增加以下类: // OneChannelInBoundHandler.java pack…

2022年3月3日 0条评论 27点热度 0人点赞 risingsun 阅读全文
Netty

Netty学习笔记(番外篇) - ChannelHandler、ChannelPipeline和ChannelHandlerContext的联系

这一篇是 ChannelHandler 和 ChannelPipeline 的番外篇,主要从源码的角度来学习 ChannelHandler、ChannelHandler 和 ChannelPipeline 相互之间是如何建立联系和运行的。 一、添加 ChannelHandler 从上一篇的 demo 中可以看到在初始化 Server 和 Client 的时候,都会通过 ChannelPipeline 的 addLast 方法将 ChannelHandler 添加进去 // Server.java // 部分代码片段…

2022年3月3日 0条评论 25点热度 0人点赞 risingsun 阅读全文
12345…56
Search

COPYRIGHT © 2022 zhizhesoft. ALL RIGHTS RESERVED.