Java的IO模型基于网络编程利弊分析

JAVA的IO模型基于网络编程利弊分析

一、IO通俗理解

  • IO的过程
    Java的IO模型基于网络编程利弊分析

  • 思考①答案:文件句柄

Java的IO模型基于网络编程利弊分析

  • 思考②答案:
    • 阻塞/非阻塞 IO(程序对内核空间数据拷贝到用户空间阶段的耗时操作的等待方式)
    • 同步/异步IO(程序对内核空间数据拷贝到用户空间阶段的耗时操作的处理方式)

二、Unix中定义的IO模型

  • 阻塞式IO模型

Java的IO模型基于网络编程利弊分析

  • 非阻塞式IO模型(数据未准备好的时候 直接返回 数据准备好的时候 复制数据 此时是同步的)

Java的IO模型基于网络编程利弊分析

  • IO复用模型(复用链路

Java的IO模型基于网络编程利弊分析

三、网络编程与Socket

  • OSI模型

    Java的IO模型基于网络编程利弊分析

  • 网络通讯流程
    Java的IO模型基于网络编程利弊分析

  • Socket

Java的IO模型基于网络编程利弊分析

  • Socket和应用程序中的IO的关系?

    • socket只是网络通讯模型中一层抽象的API
    • socket对象最多只是数据的一个承载体而已(或者说是一个FD)
    • JAVA中的socket只是fd的一种封装而已

四、JAVA的IO模型(BIO&NIO)

  • 概念

    Java的IO模型基于网络编程利弊分析

  • 实现

    • BIO(只能连接单客户端 想连接多客户端就得多加线程)

      Java的IO模型基于网络编程利弊分析

    • NIO

      Java的IO模型基于网络编程利弊分析

      Java的IO模型基于网络编程利弊分析

    Java的IO模型基于网络编程利弊分析
    Java的IO模型基于网络编程利弊分析