乙個簡單的靜態web伺服器

2021-09-12 04:03:36 字數 2072 閱讀 5814

#-*-coding:utf-8-*-

import re

from socket import *

from multiprocessing import process

#設定靜態檔案根目錄

#接收資料

request_data = cli_socket.recv(1024)

#解析http報文協議 request_data

print("requst_data:",request_data)

#處理響應資料

request_lines = request_data.splitlines()

print(request_lines)

# 獲取使用者想要的請求名

file_name = re.match(r"\w+ +(/[^ ]*) ",request_lines[0].encode("utf-8")).group(1)

#判定一下特殊情況,字串寫在左側可以避免把「==」寫成「=」時當成賦值語句

if "/" == file_name:

file_name = "/index.html"

# 開啟請求檔案

# 構造響應資料

#拼接出要傳送的字串

response = response_start_line + response_header + "\r\n" + response_body

print("response data:",response)

# 傳送資料

#cli_socket.send(bytes(response,"utf-8"))

cli_socket.send(response)

# 關閉套接字

cli_socket.close()

print("鏈結已經斷開")

def main():

#建立tcp套接字

tcp_socket = socket(af_inet,sock_stream)

tcp_socket.setsockopt(sol_socket,so_reuseaddr,1)

tcp_socket.bind(("",5566))

tcp_socket.listen(5)

#迴圈讓伺服器一直等待

while true:

try:

#等待客戶端連線

cli_socket,addrs = tcp_socket.accept()

print("%s %s:使用者已連線"%(addrs[0],addrs[1]))

p = process(target=fun,args=(cli_socket,))

p.start()

cli_socket.close()

except:

print("伺服器已經關閉")

tcp_socket.close()

if __name__ == '__main__':

main()

結果截圖

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伺服器

這個動態web伺服器的思路是在靜態伺服器的基礎上新增對url的判斷,如果url中帶有指令碼資訊,那麼伺服器會去執行指令碼而不是直接返回靜態介面 coding utf 8 import sys import re from socket import from multiprocessing impo...