而互聯網的概念是:所有設備都提供獨特的標籤(總稱互聯網協定位址或IP位址), 有互聯網服務供應商(ISP)提供的公網IP位址, 通過這些位址, 可以進行通信。
如下圖:
2. web伺服器的基本概念, 包括連結建立後的傳輸過程
一個人自學很有可能因為動力不足而中途放棄, 可以嘗試加入一個或幾個適合自己的網路群體(QQ、 微信、 社區等),尋找志同道合的學習夥伴, 相互交流、相互促進.如果大家想要學習交流歡迎給我私信, 私信關鍵字: 01.02.03.04 都會得到不一樣的資料!系統堅持到關鍵字會自動發送。 分開發送!01或者02
上面內容中也提到了socket,
總結來說, 在這個實驗裡, 我們要實現的功能只是根據使用者的請求, 生成http回應。 所以我們也應該知道http請求和回應的格式:
這裡的異常是異常中基類Exception的子類,即
裡面什麼都不幹,但是利用Exception我們可以對異常報相應的錯誤資訊。raise 語句中括弧中就是異常的提示資訊。
/* 這裡
"Unknown object '{0}'".format(self.path)
二. 當可以回應靜態頁面之後,我們接著實現CGI協議與腳本。
某些請求可以用另外編寫腳本來處理(給出回應),這樣對於新增的一些請求,就不用每次都修改伺服器腳本了。為了更好地理解CGI,我們需要知道以下基本概念。
當實現了以上兩個功能後,我們只需在類似靜態頁面的實現那樣填補代碼邏輯即可,示意代碼如下:
三. 代碼整理和重構
3.1 條件類
從上述plain和cgi的兩個示意代碼中,大家可能已經發現:在對不同條件的判斷中,兩個代碼分別使用了if-elif-else語句形式和條件類的形式。其中前者理解很容易,而後者條件類是指將條件放置在不同的類中,然後迴圈遍歷這些類,看哪個符合則對應執行相應條件。這樣處理的好處在於易於維護:對於新加入的條件,不對改動if-elif-else使其變得臃腫,而只需增加一個類作為條件,同時在handler中迴圈遍歷即可。
如我們要增加一個功能:在輸入127.0.0.1:埠號時,我們希望得到主頁的顯示(存為index.html),這時我們就新建一個條件類:
同時在RequestHandler的實現中將其加入:
裡面對test和act的定義是通過斷言來實現的,內在邏輯是:如果你子類不實現這兩個方法, 那麼你生成的子類是一定會出錯的。於是這相當於是限定子類必須實現這兩種方法。之後子類繼承該基類即可:
2. web伺服器的基本概念,包括連結建立後的傳輸過程
3. http請求格式
4.http回應格式
5. httpie庫
8.CGI
(1)字串format方法
(2)**dict
(3)str/byte轉換
1. os庫
subprocess.check_output(['cmd', 'arg1', 'arg2'])
本例中為data = subprocess.check_output(['python', fullpath])
3. 寫基類,不雞肋
get到了吧!是不是很牛逼?
這裡的異常是異常中基類Exception的子類,即
裡面什麼都不幹,但是利用Exception我們可以對異常報相應的錯誤資訊。raise 語句中括弧中就是異常的提示資訊。
/* 這裡
"Unknown object '{0}'".format(self.path)
二. 當可以回應靜態頁面之後,我們接著實現CGI協議與腳本。
某些請求可以用另外編寫腳本來處理(給出回應),這樣對於新增的一些請求,就不用每次都修改伺服器腳本了。為了更好地理解CGI,我們需要知道以下基本概念。
當實現了以上兩個功能後,我們只需在類似靜態頁面的實現那樣填補代碼邏輯即可,示意代碼如下:
三. 代碼整理和重構
3.1 條件類
從上述plain和cgi的兩個示意代碼中,大家可能已經發現:在對不同條件的判斷中,兩個代碼分別使用了if-elif-else語句形式和條件類的形式。其中前者理解很容易,而後者條件類是指將條件放置在不同的類中,然後迴圈遍歷這些類,看哪個符合則對應執行相應條件。這樣處理的好處在於易於維護:對於新加入的條件,不對改動if-elif-else使其變得臃腫,而只需增加一個類作為條件,同時在handler中迴圈遍歷即可。
如我們要增加一個功能:在輸入127.0.0.1:埠號時,我們希望得到主頁的顯示(存為index.html),這時我們就新建一個條件類:
同時在RequestHandler的實現中將其加入:
裡面對test和act的定義是通過斷言來實現的,內在邏輯是:如果你子類不實現這兩個方法, 那麼你生成的子類是一定會出錯的。於是這相當於是限定子類必須實現這兩種方法。之後子類繼承該基類即可:
2. web伺服器的基本概念,包括連結建立後的傳輸過程
3. http請求格式
4.http回應格式
5. httpie庫
8.CGI
(1)字串format方法
(2)**dict
(3)str/byte轉換
1. os庫
subprocess.check_output(['cmd', 'arg1', 'arg2'])
本例中為data = subprocess.check_output(['python', fullpath])
3. 寫基類,不雞肋
get到了吧!是不是很牛逼?