web靜態伺服器–顯示需要的頁面,正規表示式
import socket
import re
defservice_client
(new_socket)
:"""為這個客戶端返回資料"""
# 1. 接收瀏覽器傳送過來的請求 ,即http請求
# request 就是header裡的內容,即[
)# 這裡把request的內容按行切割成列表
)# 【^/】表示非斜槓,即「index"之前的get 等,
# 然後(/【^ 】)的 / 表示/index的那個斜槓,
# 【^ 】表示非空,一直匹配到http前那個空格停止
# request_lines[0] 表示request_lines的第乙個元素(header第一行),即get /index.html....
if ret:
file_name = ret.group(1)
# print("*"*50, file_name)
if file_name ==
"/":
file_name =
"/index.html"
# 2. 返回http格式的資料,給瀏覽器
)# 2.1 準備傳送給瀏覽器的資料---header
# 2.2 準備傳送給瀏覽器的資料---boy
# response += "hahahhah"
# 將response header傳送給瀏覽器
new_socket.send(response.encode(
"utf-8"))
# 將response body傳送給瀏覽器
new_socket.send(html_content)
# 關閉套接
new_socket.close(
)def
main()
:"""用來完成整體的控制"""
# 1. 建立套接字
tcp_server_socket = socket.socket(socket.af_inet, socket.sock_stream)
tcp_server_socket.setsockopt(socket.sol_socket, socket.so_reuseaddr,1)
# 2. 繫結
tcp_server_socket.bind((""
,7890))
# 3. 變為監聽套接字
tcp_server_socket.listen(
128)
while
true
:# 4. 等待新客戶端的鏈結
new_socket, client_addr = tcp_server_socket.accept(
)# 5. 為這個客戶端服務
service_client(new_socket)
# 關閉監聽套接字
tcp_server_socket.close(
)if __name__ ==
"__main__"
: main(
)
request_lines = request.splitlines() # 這裡把request的內容按行切割成列表
# 【^/】表示非斜槓,即「index"之前的get 等,
# 然後(/【^ 】)的 / 表示/index的那個斜槓,
# 【^ 】表示非空,一直匹配到http前那個空格停止
# request_lines[0] 表示request_lines的第乙個元素(header第一行),即get /index.html....
Web靜態伺服器 顯示需要的頁面
coding utf 8 import socket import re from multiprocessing import process 常量,所有字母全部大寫 設定靜態檔案根目錄 html root dir html defhandle client client socket 處理客戶端...
Web靜態伺服器02 顯示需要的頁面
coding utf 8 import socket import re def handle client client socket 為乙個客戶端進行服務 如果沒有指定訪問哪個頁面。例如index.html 404表示沒有這個頁面 因為頭資訊在組織的時候,是按照字串組織的,不能與以二進位制開啟檔...
Web靜態伺服器 2 顯示需要的頁面
coding utf 8 import socket import re def handle client client socket 為乙個客戶端進行服務 如果沒有指定訪問哪個頁面。例如index.html 404表示沒有這個頁面 因為頭資訊在組織的時候,是按照字串組織的,不能與以二進位制開啟檔...