python Web伺服器(1)
阿新 • • 發佈:2018-12-18
最近半個月學了python web方面的有關知識,web開發通常是從某一些框架開始學習 比如Django,flask。但是我個人覺得只有自己實現一遍才能更好的理解,印象也會更加深刻。希望個人的經驗能對你有一些幫助
(1) 編寫一個靜態頁面的web伺服器
編寫web伺服器之前,你需要了解一下知識: socket,http協議,tcp/ip協議,作業系統程序等方面的知識
一次HTTP請求所經歷的步驟如下: (1)客戶端(通常為瀏覽器)傳送請求 (2)伺服器建立socket (3)socket 繫結伺服器 (4)socket 監聽 (5)socket 接受客戶端請求 (6)多程序處理客戶端請求 (7)中斷請求
程式碼
import socket
from multiprocessing import Process
def handle_client(client_socket):
request_data = client_socket.recv(1024)
print("request_data:" , request_data)
response_start_line = "HTTP/1.1 200 OK\r\n"
response_heads = "Server:Myserver\r\n"
response_body = "This is a easy static web server"
response = response_start_line + response_heads + "\r\n" + response_body
print("response_data:", response)
client_socket.send(bytes(response, "utf-8"))
client_socket.close()
if __name__ == "__main__":
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_socket. bind(("", 8000))
server_socket.listen(128)
while True:
client_socket,client_address = server_socket.accept()
print("[%s %s]使用者連線上了" % client_address)
client_socket_process = Process(target=handle_client, args=(client_socket,))
client_socket_process.start()
client_socket.close()
```