IO 模型

2bd08aaa654a4b9a42ead05de4cf1b17.png

若有收获,请记得分享和转发哦

在学习 Netty 框架前有一个话题是无法绕过的,就是:网络编程 IO 模型,听见 IO 模型有些同学就开始背八股文了,Java 常见 IO 模型有:

  • 同步阻塞 BIO

  • 同步非阻塞 NIO

  • 异步非阻塞 AIO

今天跟大家一起重温下这些知识点。

Socket 网络编程

网络编程中有一个重要的概念就是:Socket,我们简单了解一下。

在网络通信中,客户端和服务端通过一个双向的通信连接实现数据的交换,连接的任意一端都可称为一个 Socket

Talk is cheap, show me the diagram,Socket 网络通信基本过程如下图所示:

39d21422684d579d81f9d4f56475adcc.png

总结一下流程,可以简单描述为这四步:

  • (1)服务端启动,监听指定端口,等待客户端连接;

  • (2)客户端尝试与服务端连接,建立可信数据传输通道;

  • (3)客户端与服务端进行数据交换;

  • (4)客户端或者服务端断开连接,终止通信;

d0b502d57a068645fb64b41cbbd309a4.png

0bd555928bf0ab324a074d16ef91d408.png

b99ea9eea4727caec1d3555bd255fca9.png

cdbcce26f18d9346aa707df9ab7c10a6.png

d6b1c6ee5b556e632eae1f62ea3252fc.png

c55b3b88578b84478d4634e2fe8fb40d.png

a16677531c51d8a6ad96d505f97f460a.png

a076315b721148a87ddbe0f7746d2d06.png

读写事件的发生将其交由某个空闲的线程处理。

Buffer、Channel、Selector 这三个组件的之间的关系可以用下面的图来描述:

19095a55dcb90baf84f9a95dbb198d2a.png

436c3928dbf0b3460b91a37450377334.png

db8c05ddff0a466547b6195234b56e3b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值