NIO簡單實現httpserver

http協議簡單介紹

http(超文本傳輸協議)是基於tcp/ip底層傳輸協議實現;http是一種無狀態方式,因爲瀏覽器在和服務器進行三次握手之後進行數據的傳輸和處理之後會將連接斷開;

http請求構成

完整的http請求由請求行,請求頭,空行,請求體構成

請求頭定義了請求方法,路徑(文件),協議版本

請求頭是由一對對的鍵值對構成

空行的作用是用戶分割請求體(body)

http應答構成

完整的http應答由狀態行,協議版本,響應頭,空行,相應體構成

NIO簡單介紹

NIO(none blocking I/O)非阻塞IO,在jdk1.4就已經提供,但是在jdk1.8才穩定下;說的NIO就不得不提起BIO;BIO同步阻塞,服務器接收到鏈接之後會爲客戶端單獨開啓一個線程爲其服務,增加了系統資源的開銷同時線程上下文切換也一定程度拖慢了處理速度;NIO會創建一個接收鏈接的線程用戶接收客戶端鏈接(多個客戶端複用一個線程來進行狀態的改變通知到應用程序)且客戶端的狀態的改變交給jvm去做應用程序只關心需要對那些狀態感興趣的事件處理,之後會將socket註冊到多路複用器上,多路複用器會輪訓有讀寫事件纔會開啓線程進行處理;

NIO核心組件

Buffer,channel,selector;參考https://www.jianshu.com/p/456832015885

代碼部分

參見附件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章