参考 unix网络编程 chapter6.2 I/O models,windows网络编程

1,----------------------理论:socket编程主要有两步

第一步:   “等待数据”从网络上传到本地。然后将数据包从网络层拷贝到内核的缓存中

-->用户应用进程-->recvfrom-->系统调用-->内核等待网络数据报-->网络数据报准备好(拷贝到内核)

第二步:   “拷贝数据”从内核中把数据拷贝到程序的数据区中

-->内核拷贝数据到用户应用程序(buffer)-->拷贝完成-->返回调用。

同步IO和异步IO的区别就在于:应用程序的调用(数据等待+数据拷贝)是否立即返回!

阻塞IO和非阻塞IO的区别就在于:数据等待的时候进程是否阻塞!

书中介绍了5种I/O models:

blocking I/O

两步全阻塞,并让出CPU,或者出错被系统信号中断。

nonblocking I/O

告诉内核,I/O操作无法完成时,不要将进程睡眠,而是返回一个错误EWOULDBLOCK信号,然后不断的polling轮询,直至正常返回调用

I/O multiplexing (select and  poll)

阻塞于select()/poll()/epoll()调用,轮询,当返回套接口可读条件时,调用recvfrom拷贝数据到用户应用程序, 好处在于可以轮询多个文件描述符FD

signal driven I/O ( SIGIO)

不解释,没有AIO好

asynchronous I/O (the POSIX  aio_functions)

暂不解释

2,----------------------java 中的应用:(个人感悟2015-03-12 22:26)

1,传统IO(Old IO):所有的socket链接(线程),两步都阻塞(数据等待+数据拷贝)

2,NIO(new IO):不是noblocking IO,是 multiplexing I/O。只有selector一处(一个线程)阻塞( 数据等待),

        所有的socket链接(线程)只在数据拷贝处阻塞。

java代码中的noblocking是对所有socket链接,数据等待这一步的阻塞,转移给了selector,最多是局部的noblocking,炒作之嫌更大。

  • 大小: 24.8 KB
  • 查看图片附件

io-nio-socket步步为营(七) IO模型-心得体会相关推荐

  1. java中io.nio.aio_Java中网络IO的实现方式-BIO、NIO、AIO

    在网络编程中,接触到最多的就是利用Socket进行网络通信开发.在Java中主要是以下三种实现方式BIO.NIO.AIO. 关于这三个概念的辨析以前一直都是好像懂,但是表达的不是很清楚,下面做个总结完 ...

  2. 2017-2018-2 20179317 《网络攻防技术》第七周学习心得体会

    教材学习内容总结 课本第七章主要围绕windows操作系统安全攻防技术进行讲述,教材中主要涉及的攻击内容如下: Windows操作系统的基本结构 运行于处理器特权模式的操作系统内核 运行在处理器非特权 ...

  3. java io nio socket_通过socket编程掌握IO流 —— NIO

    一.本次目标 改造server,采用NIO读取client信息: 改造client,亦采用NIO发送消息,与之前不同的BIO形成对比: 二.编码 1.新建byte数组拼接公共类 主要用作在channe ...

  4. 【学习笔记】JAVA IO与NIO(new IO)的对比与不同IO模型的理解

    JAVA IO 分类: 几种IO 模型 1. 阻塞 IO 模型 2. 非阻塞 IO 模型 JAVA NIO 多路复用 IO 模型(即Java中的NIO) JAVA IO 思维导图: 分类: 按照流的方 ...

  5. io 错误: socket closed_Tomcat NIO(9)IO线程Overall流程和关键类

    在上一篇文章里我们主要介绍了 tomcat NIO 中 poller 线程的阻塞与唤醒,根据以前文章当 poller 线程监测到连接有数据可读事件的时候,会把原始 socket 的包装对象委托到 to ...

  6. java nio 传统标准io socket 和nio socket比较与学习

    在计算机系统中,最不可靠的就是网络请求,我们通过服务器端给客户端echo信息(客户端请求什么信息服务端就返回给客户端什么信息).比较两种socket io的优劣. 标准io socket:     服 ...

  7. AIO,BIO,NIO:同步阻塞式IO,同步非阻塞IO,异步非阻塞IO

    BIO,同步阻塞式IO,简单理解:一个连接一个线程 NIO,同步非阻塞IO,简单理解:一个请求一个线程 AIO,异步非阻塞IO,简单理解:一个有效请求一个线程 IO:阻塞IO BIO:同步阻塞IO.服 ...

  8. java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别

    到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...

  9. java io nio pio_Netty之BIO(同步阻塞IO)、PIO(偽異步阻塞IO)、NIO(異步非阻塞IO)、AIO(異步非阻塞IO)、Netty...

    學習書籍:Netty權威指南 多種IO方式的比較: 1.BIO(同步阻塞IO) 使用ServerSocket綁定IP地址和監聽端口,客戶端發起連接,通過三次握手建立連接,用socket來進行通信,通過 ...

最新文章

  1. HarmonyOS Image 属性了解
  2. vb.net 当前计算机用户,用VB写的一个组件,实现添加系统用户,并添加到指定组-.NET教程,VB.Net语言...
  3. 关于matlab向文件写入数据的方法——留着备用
  4. springcloud搭建篇
  5. 2001年 数的划分
  6. ARM架构和ARM核区别和联系
  7. 企业网络推广期间影响企业网络推广自然排名的因素有哪些?
  8. 2018 SaaS应用大会 掀起SaaS应用新浪潮
  9. R语言:paste函数解析
  10. 机器学习深度学习论文写作工具推荐
  11. Python3之对象垃圾收集机制浅析
  12. CTS(15)---Android 兼容性
  13. 社群数据分析:你运营的社群是好社群吗?
  14. Kali Linux 更新源 操作完整版教程
  15. H5获取html标签
  16. uniapp进行H5微信支付
  17. 计算机学stata,stata(统计学软件)
  18. Word-VBA:删除选择区域的项目符号
  19. 如何进行Web服务的性能测试
  20. Faraday:微博广告分层实验平台架构

热门文章

  1. ubuntu 16.04 下安装搜狗输入法教程
  2. SCP,NFS,TFTP的初步认识
  3. 反素数 Antiprime(信息学奥赛一本通 1625)(洛谷 1463)
  4. 为OneFlow添加新的前端语言
  5. 汽车指示器数字仪表盘logo标志AE视频模版免费下载【56期】
  6. 点击识别元素位置、生成显示二维码、下载二维码
  7. Linux技术社区—蜗窝科技
  8. mysql定时任务,把7天的数据存到历史表,再删除7天前的数据
  9. 学计算机的第一天,计算机人的一天
  10. 【行业首发】蛙色VR全景作品支持对接高德地图!