Web伺服器 併發伺服器 多程序(3 4 1)

2022-09-15 22:03:22 字數 1764 閱讀 5223

目錄

在單程序的時候,相當於

是來乙個客戶,派乙個人去服務一下

效率低,現在使用多程序來服務

假設場景 100個人同時訪問頁面

單程序:一次處理,後面的會等待時間長

多程序:併發處理,一起處理

當然程序不能越多越好,硬體不支援

執行緒的開銷比程序少,但最好使用協程

注意

用process來建立子程序的時候,子程序會複製主程序的資源

全域性變數和區域性變數都會複製

from socket import *

import re

import multiprocessing

def service_client(new_socket):

'''為這個客戶端返回資料'''

# 1.接收瀏覽器傳送過來的請求,即http請求

#2,返回http格式的資料給瀏覽器

#2.1準備傳送給瀏覽器的資料 ---header

response = "http/1.1 200 ok\r\n"#正常瀏覽器\r\n代表的是換行

response += "\r\n"

#2.2準備傳送給瀏覽器的資料

response = response + file_name

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

#3.關閉套接字

new_socket.close()

def main():

'''用來完成整體的控制'''

#1.建立套接字

tcp_server_socket = socket(af_inet, sock_stream)

# 2.繫結本地資訊

port = 7777

address = ('', port)

tcp_server_socket.bind(address)

# 3.變為監聽,將主動套接字變為被動套接字

tcp_server_socket.listen(128)

#等待連線

while true:

client_socket, clientaddr = tcp_server_socket.accept()

#多程序處理

p = multiprocessing.process(target=service_client,args=(client_socket,))

p.start()

client_socket.close()

# 關閉監聽套接字

tcp_server_socket.close()

if __name__ == "__main__":

main()

個人部落格**

個人github位址

併發伺服器 多程序實現

通過簡單的socket可以實現一對一的c s通訊,當多個客戶端同時進行伺服器訪問,那麼伺服器只能按序的一一進行處理,除了第乙個客戶端,其餘客戶端都會陷入等待。並且這樣的程式只能實現半雙工通訊 資料能雙向傳輸,但同一時刻只能單向傳遞,通過切換傳輸方向實現雙工 而且實現方式繁瑣,功能拘束,實用價值很低。...

linux多程序併發伺服器

多程序併發伺服器,多執行緒版 include include include include include include include include include include include 程序 函式 void recyle int num int main int argc,cha...

3 模擬多程序併發伺服器

main.cpp mutiserver created by 吳珝君 on 2019 5 8.include include mysocket.hpp include include includeint main int argc,const char ar else if pid 0 else ...