参考 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,炒作之嫌更大。
相关推荐
赠送jar包:xnio-nio-3.8.0.Final.jar; 赠送原API文档:xnio-nio-3.8.0.Final-javadoc.jar; 赠送源代码:xnio-nio-3.8.0.Final-sources.jar; 赠送Maven依赖信息文件:xnio-nio-3.8.0.Final.pom; 包含翻译后的API...
赠送jar包:httpcore-nio-4.4.6.jar 赠送原API文档:httpcore-nio-4.4.6-javadoc.jar 赠送源代码:httpcore-nio-4.4.6-sources.jar 包含翻译后的API文档:httpcore-nio-4.4.6-javadoc-API文档-中文(简体)版.zip ...
赠送jar包:httpcore-nio-4.4.15.jar 赠送原API文档:httpcore-nio-4.4.15-javadoc.jar 赠送源代码:httpcore-nio-4.4.15-sources.jar 包含翻译后的API文档:httpcore-nio-4.4.15-javadoc-API文档-中文(简体)版....
### JAVA IO-NIO 详解 #### 一、IO与NIO概述 在Java开发中,输入/输出(IO)操作是程序与外部环境交互的重要环节。通过IO操作,程序可以读取外部数据或向外部环境输出数据。Java的IO体系自Java 1.0以来就一直存在...
赠送jar包:httpcore-nio-4.4.10.jar; 赠送原API文档:httpcore-nio-4.4.10-javadoc.jar; 赠送源代码:httpcore-nio-4.4.10-sources.jar; 赠送Maven依赖信息文件:httpcore-nio-4.4.10.pom; 包含翻译后的API文档...
赠送jar包:xnio-nio-3.8.4.Final.jar; 赠送原API文档:xnio-nio-3.8.4.Final-javadoc.jar; 赠送源代码:xnio-nio-3.8.4.Final-sources.jar; 赠送Maven依赖信息文件:xnio-nio-3.8.4.Final.pom; 包含翻译后的API...
赠送jar包:httpcore-nio-4.4.15.jar 赠送原API文档:httpcore-nio-4.4.15-javadoc.jar 赠送源代码:httpcore-nio-4.4.15-sources.jar 包含翻译后的API文档:httpcore-nio-4.4.15-javadoc-API文档-中文(简体)-...
《深入解析httpcore-nio-4.3.jar:构建高性能的Java非阻塞网络通信》 在Java网络编程中,高效、稳定且可扩展的通信框架至关重要。Apache HttpComponents项目中的HttpCore NIO模块(httpcore-nio)就是这样一个框架...
赠送jar包:httpcore-nio-4.4.10.jar; 赠送原API文档:httpcore-nio-4.4.10-javadoc.jar; 赠送源代码:httpcore-nio-4.4.10-sources.jar; 赠送Maven依赖信息文件:httpcore-nio-4.4.10.pom; 包含翻译后的API文档...
赠送jar包:httpcore-nio-4.4.5.jar; 赠送原API文档:httpcore-nio-4.4.5-javadoc.jar; 赠送源代码:httpcore-nio-4.4.5-sources.jar; 赠送Maven依赖信息文件:httpcore-nio-4.4.5.pom; 包含翻译后的API文档:...
赠送jar包:xnio-nio-3.8.4.Final.jar; 赠送原API文档:xnio-nio-3.8.4.Final-javadoc.jar; 赠送源代码:xnio-nio-3.8.4.Final-sources.jar; 赠送Maven依赖信息文件:xnio-nio-3.8.4.Final.pom; 包含翻译后的API...
赠送jar包:xnio-nio-3.8.0.Final.jar; 赠送原API文档:xnio-nio-3.8.0.Final-javadoc.jar; 赠送源代码:xnio-nio-3.8.0.Final-sources.jar; 赠送Maven依赖信息文件:xnio-nio-3.8.0.Final.pom; 包含翻译后的API...
赠送jar包:httpcore-nio-4.4.6.jar; 赠送原API文档:httpcore-nio-4.4.6-javadoc.jar; 赠送源代码:httpcore-nio-4.4.6-sources.jar; 赠送Maven依赖信息文件:httpcore-nio-4.4.6.pom; 包含翻译后的API文档:...
赠送jar包:httpcore-nio-4.4.14.jar; 赠送原API文档:httpcore-nio-4.4.14-javadoc.jar; 赠送源代码:httpcore-nio-4.4.14-sources.jar; 赠送Maven依赖信息文件:httpcore-nio-4.4.14.pom; 包含翻译后的API文档...
`commons-io-2.5.jar` 是Apache Commons项目的一部分,它提供了一系列增强和扩展了Java标准IO库的类和方法。这个库为开发者提供了更高效、更便捷的方式来执行常见的文件、目录和流操作。 一、Java IO 基础 Java IO ...
基于java的开发源码-NIO网络框架 xSocket.zip 基于java的开发源码-NIO网络框架 xSocket.zip 基于java的开发源码-NIO网络框架 xSocket.zip 基于java的开发源码-NIO网络框架 xSocket.zip 基于java的开发源码-NIO网络...
"android-socket-nio-master.zip" 是一个关于Android中使用Socket结合NIO实现高效通信的项目,其目标是提高Socket通信的性能和处理大量并发连接的能力。 NIO(非阻塞I/O)是Java提供的一个替代传统I/O的API,主要...
httpcore-nio-4.4.9.jar
赠送jar包:httpcore-nio-4.4.12.jar; 赠送原API文档:httpcore-nio-4.4.12-javadoc.jar; 赠送源代码:httpcore-nio-4.4.12-sources.jar; 赠送Maven依赖信息文件:httpcore-nio-4.4.12.pom; 包含翻译后的API文档...
《深入理解HTTPCore-NIO-4.4.6:核心组件与网络编程实践》 HTTPCore-NIO是Apache基金会开发的一个高性能、轻量级的HTTP客户端和服务端通信库,其4.4.6版本提供了丰富的功能和优化。该库的核心在于使用了Java的非...