目錄
在單程序的時候,相當於注意是來乙個客戶,派乙個人去服務一下
效率低,現在使用多程序來服務
假設場景 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 ...