2017-9-7 - A - WebServer項目

來源:互聯網
上載者:User

標籤:邏輯   線程   本文   項目   傳輸   高並發   Null 字元串   取資料   執行個體   

1 緩衝流的readLine方法是否阻塞?

2 請求(擷取),響應(返回),分別的格式什嗎?HTTP的規則是什嗎?
http請求格式

一次請求,一次響應,沒有請求,沒有響應。

3 HTTP協議是什嗎?
超文字傳輸通訊協定 (HTTP),是瀏覽器與伺服器間的傳輸通訊協議。

4 HTTP請求由什麼組成?
請求行,訊息頭,訊息本文。

5 請求行格式是什嗎?
Method Request-URI HTTP-VersionCRLF
(CR:指代不同系統中的斷行符號 LF:指代不同系統中的換行——CRLF:換行到最開始,即該行結束)
如:
GET /index.html HTTP/1.1CRLF
POST /login.html HTTP/1.1CRLF

6 什麼是DNS?
將網域名稱綁定在指定IP地址,訪問時網域名稱轉換成對應IP地址。

7 CRLF的作用是?
表示當行結束。

8 伺服器可否使用br(BufferedReader)按行快速讀取要求標頭(CRLF換行)?如果不能用什嗎?具體讀取流程是?
不可,br換行只看\n(不會智能識別不同系統下的換行)
使用StringBuilder一個字元一個字元讀取,直到讀取到CR(13),LF(10)為止。
具體讀取流程:判斷當次及上次的數字是否等於10和13,如果是就跳出,如果不是,就將當次的值轉型成char後加入builder並將當次的值賦給c2,用以下次判斷
且由於最後字元多出CRLF,必須用String.trim()去掉這兩個空白字元。
int c1 = -1,c2 = -1
while((c1 = in.read())! = -1){
if(c1 == 10 && c2 == 13){
break;
}
bulider.append((char)c1);
c2 = c1;
}
String line = builder.toString().trim();

9 HTTP請求預設訪問什麼連接埠?
80

10 要求標頭中包含的URI將會請求伺服器中的網頁。

11 第一次擷取要求標頭時while(true)中需要包含is嗎?
不需要,is擷取的是一大段,迴圈基準是換行而不是重新擷取資料。

12 當需要同時處理多個使用者發送過來的請求時,用while(true)還是線程?
線程,因為需要同時,而不是處理完一個再處理另一個。

13 為何需要用到線程池?
提高並發效率。

14 是否需要將讀取請求行等分開?
是。

15 讀取HTTP請求的流程是?
讀取請求行
讀若干行(直到讀取了CRLF)。
讀取訊息本文
分析請求行請求什麼資源

16 商務邏輯要極其清晰,一個方法實現一個功能。

伺服器整體商務程序,
建立一個伺服器擷取請求,讀取處理請求,返回請求資源
將後兩個流程中包入ClietnHandler(建立類),一旦有新的請求便建立新的線程,由於線程較多,因此需要用線程池管理。
ClientHandler中的主要流程又是run方法,run方法(便是包含擷取,讀取,處理請求)的流程為,
①讀取請求,將請求項轉化為對象,方便後續檢索確定返回的資料。
對象包括要求標頭及訊息頭尋找表,將處理該對象的方法也寫入。
訊息頭尋找表在使用前必須執行個體化,不然用不了
跳出迴圈的判斷條件是 返回字串長度為0 而不是全等於null或""。(StringBuilder內部預設維護一個Null 字元串)
②返回請求,將響應的屬性執行個體化成一個對象。
請求對象包含:
其中狀態值必須用字典存放

由大至小,不管是在大流程的把握上,還是完善小的分支都要胸有成竹。要一直把控握著whole map。

17 思路打好後,要先做什嗎?
打樁。

18 InputStream的read()方法返回的是什嗎?
下一個位元組,直到讀取完畢返回-1。

2017-9-7 - A - WebServer項目

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.