1. 程式人生 > 實用技巧 >Java的IO模型基於網路程式設計利弊分析

Java的IO模型基於網路程式設計利弊分析

JAVA的IO模型基於網路程式設計利弊分析

一、IO通俗理解

  • IO的過程
    在這裡插入圖片描述

  • 思考①答案:檔案控制代碼

在這裡插入圖片描述

  • 思考②答案:
    • 阻塞/非阻塞 IO(程式對核心空間資料拷貝到使用者空間階段的耗時操作的等待方式)
    • 同步/非同步IO(程式對核心空間資料拷貝到使用者空間階段的耗時操作的處理方式)

二、Unix中定義的IO模型

  • 阻塞式IO模型

在這裡插入圖片描述

  • 非阻塞式IO模型(資料未準備好的時候 直接返回 資料準備好的時候 複製資料 此時是同步的)

在這裡插入圖片描述

  • IO複用模型(複用鏈路

在這裡插入圖片描述

三、網路程式設計與Socket

  • OSI模型

    在這裡插入圖片描述

  • 網路通訊流程
    在這裡插入圖片描述

  • Socket

在這裡插入圖片描述

  • Socket和應用程式中的IO的關係?

    • socket只是網路通訊模型中一層抽象的API
    • socket物件最多隻是資料的一個承載體而已(或者說是一個FD)
    • JAVA中的socket只是fd的一種封裝而已

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

  • 概念

    在這裡插入圖片描述

  • 實現

    • BIO(只能連線單客戶端 想連線多客戶端就得多加執行緒)

      在這裡插入圖片描述

    • NIO

      在這裡插入圖片描述

      在這裡插入圖片描述

    在這裡插入圖片描述
    在這裡插入圖片描述