消息時的系統通信,通常基於網絡協議實現。常見的協議包括TCP/IP,UDP/IP。
TCP/IP等協議用於數據傳輸,但要完成通信,還需要對數據進行處理。例如讀取和寫入數據。
I/O可以分為兩種:同步IO和異步IO,同步I/O最常見的是 BIO(Blocking IO)、NIO(Non-Blocking IO)
BIO:是當發起I/O的讀或寫操作時,均為阻塞方式,直到應用程序讀到了流或者將流寫入數據。
NIO:基於事件驅動思想,常采用reactor(反應器)模式。當發起 IO請求時,應用程序是非阻塞的。當SOCKET有流可讀或寫的時候,
由操作系統通知應用程序,應用程序再將流讀取到緩沖區或者寫入系統。
AIO:同樣基於事件驅動的思想,通常采用Proactor(前攝器模式)實現。在進行I/O操作時,直接調用API的read或write,這兩種方法
均為異步。對於讀操作,操作系統將數據讀到緩沖區,並通知應用程序,對於寫操作,操作系統將write方法傳遞的流寫入並主動通知
應用程序。它節省了NIO中遍歷事件通知隊列的代價。
這里注意比較NIO和AIO的不同,AIO是操作系統完成IO並通知應用程序,NIO是操作系統通知應用程序,由應用程序完成。