這個動態web伺服器的思路是在靜態伺服器的基礎上新增對url的判斷,如果url中帶有指令碼資訊,那麼伺服器會去執行指令碼而不是直接返回靜態介面
#-*-coding:utf-8-*-
import sys
import re
from socket import *
from multiprocessing import process
#設定靜態檔案根目錄
print("%s %s:使用者已連線" % (addrs[0], addrs[1]))
p = process(target=self.handle_client, args=(cli_socket,))
p.start()
cli_socket.close()
except:
print("伺服器已經關閉")
# 接收資料
request_data = cli_socket.recv(1024)
# 解析http報文協議 request_data
print("requst_data:", request_data)
# 處理響應資料
request_lines = request_data.splitlines()
print(request_lines)
request_da = request_lines[0]
# 獲取使用者想要的請求名
file_name = re.match(r"\w+ +(/[^ ]*) ", request_da.decode("utf-8")).group(1)
if file_name.endswith(".py"):
# 處理py檔案
m = __import__(file_name[1:-3])
env = {}
response_start_line = self.response_start
response_header = self.response_headers
else:
# 判定一下特殊情況,字串寫在左側可以避免把「==」寫成「=」時當成賦值語句
if "/" == file_name:
file_name = "/index.html"
# 開啟請求檔案
# 構造響應資料
# 傳送資料
cli_socket.send(bytes(response, "utf-8"))
# cli_socket.send(response)
# 關閉套接字
cli_socket.close()
print("鏈結已經斷開")
WEB 乙個簡單的WEB伺服器
web 伺服器如何工作的?http hypertext transfer protocol 是一套計算機通過網路進行通訊的規則。計算機專家設計出http,使http客戶 如web瀏覽器 能夠從http伺服器 web伺服器 請求資訊和服務,http目前協議的版本是1.1.http是一種無狀態的協議,無...
乙個簡單的web伺服器
新的一年了,新的開始,打算重新看一遍asp.net本質論這本書,再重新認識一下,查漏補缺,認認真真的過一遍。首先需要引入命名空間 system.net,關於網路程式設計的大部分型別及操作都可以在這個命名空間下找到。system.net.sockets 命名空間中提供了基於socket程式設計的資料型...
乙個簡單的靜態web伺服器
coding utf 8 import re from socket import from multiprocessing import process 設定靜態檔案根目錄 接收資料 request data cli socket.recv 1024 解析http報文協議 request data...