簡單實現web伺服器

2021-10-10 08:28:03 字數 2014 閱讀 4755

import multiprocessing

import socket

import re

class webservice(object):

def __init__(self):

# 建立套接字

self.socket_server = socket.socket(socket.af_inet, socket.sock_stream)

# 重複利用乙個埠不會報錯

self.socket_server.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1)

# 繫結ip,埠

self.socket_server.bind(("", 9900)) # 如果ip為本地,則可以不寫

# 開始監聽

self.socket_server.listen(128)

def service_client(self, new_socket):

# 接收客戶端傳送的資料

requestheader = new_socket.recv(1024).decode("utf-8")

file_list = requestheader.splitlines()

filename = ""

ret = re.match(r"[^/]+(/[^ ]*)", file_list[0])

if ret:

filename = ret.group(1)

print(filename)

if filename == "/":

print("*" * 100)

filename = "/index.html"

# 返回http資料給客戶端

try:

f = open("./html" + filename, "rb")

except:

# 有異常時執行

responseheader += "file not found 哈哈哈"

new_socket.send(responseheader.encode("utf-8"))

else:

# 沒有異常執行

# 傳送responseheader給客戶端

new_socket.send(responseheader.encode("utf-8"))

# 傳送responsebody給客戶端

new_socket.send(responsebody)

# 關閉套接字

new_socket.close()

def run(self):

"""用來控制整體"""

while true:

# 等待客戶端鏈結

new_socket, address = self.socket_server.accept()

# 為客戶端服務

p = multiprocessing.process(target=self.service_client, args=(new_socket,))

p.start()

new_socket.close()

# 關閉套接字

self.socket_server.close()

def main():

web_service = webservice()

web_service.run()

if __name__ == "__main__":

main()

web伺服器 簡單web伺服器實現

三次握手 一般情況下是瀏覽器先傳送請求資料,c s ack 應答 三次握手成功後,才開始進行通訊資料的收發。四次揮手 一般情況下是客戶端先關閉,給瀏覽器傳送關閉資訊。如果瀏覽器傳送了關閉資訊,但是伺服器沒有回過去,較慢 那麼瀏覽器一直發是不是就會有問題?所以會等待 2msl的時間。一般為2 5分鐘。...

C 實現簡單WEB伺服器

一 http協議的作用原理 www是以internet作為傳輸媒介的乙個應用系統,www網上最基本的傳輸單位是web網頁。www的工作基於客戶機 伺服器計算模型,由web 瀏覽器 客戶機 和web伺服器 伺服器 構成,兩者之間採用超文字傳送協議 http 進行通訊。http協議是基於tcp ip協議...

python實現簡單的web伺服器

最近有需求需要提供乙個簡單的 web 伺服器,用於客戶端上報一些內容,採用 post 方式上報並支援 gzip 壓縮,如下 python coding utf 8 上報資料用 gzip 壓縮了,所以用 http 伺服器接收資料並輸出接收到的資料 只儲存過去7天的日誌,按天建立新的日誌 接收上報的檔案...