前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >網絡Io实现方式

網絡Io实现方式

作者头像
爱明依
发布2019-03-12 15:26:32
3490
发布2019-03-12 15:26:32
举报
文章被收录于专栏:爱明依爱明依爱明依

我们在实践中接触最多的网络模型是以太网以及TCP/IP协议栈,UDP在一些场景中也会用到,那么当我们使用Socket 套接字进行网络通信开发时,下面介绍会用到的三种方式。

一:BIO方式

  BIO即BlockingIO ,采用阻塞的方式实现,也就是一个Socket套接字需要使用一个线程来进行处理。发生建立连接、读数据、写数据、的操作时,都可能会阻塞。这个模式的好处是简单,这样带来的问题是一个线程只处理一个Socket,如果是Server端,在遇到支持并发的连接时,就需要更多的线程来完成这个工作,BIO的工作方式图下图

二":NIO方式

     NIO即NonblockingIO,基于时间驱动思想,采用的是Reactor模式,如下图。这个在Java实现的服务端中也是采用比较多的一种方式。相对于BIO,NIO的一个明显好处就是不需要为每一个Socket套接字分配一个线程,而可以在一个线程中处理多个Socket套接字相关的工作。

Reactor 会管理所有的handler ,并且把出现的事件,交给相应的Handler 去处理。通过Reactor 对所有客户端的Scoket 套接字的事件 做处理,然后派发到不同的线程中。这样就解决了BIO 中卫支撑更多的Socket 套接字而需要打开更多的线程的问题。

如下图

3 AIO方式后续再写吧。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年11月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档