1. 程式人生 > >python網路程式設計學習(2-1)

python網路程式設計學習(2-1)

使用多路服用套接字I/O提升效能

1.使用ForkingMixIn:為每個客戶端建立一個新的程序

(1)建立ForkingServer,繼承於TCP Server和ForkingMixIn類,前一個類可以完成伺服器的基本操作,後一個則是可以非同步處理客戶端

(2)ForkingServer類需要建立一個請求處理程式,需要繼承BaseRequestHandler類

(3)客戶端ForkingClient包括三部分:__init__,run,還有close

程式碼:

import os

import socket

注意到繼承BaseRequestHandler之後需要改的是handle函式 !!

To implement a service, you must derive a class fromBaseRequestHandler and redefine its handle() method.

serve_forever:一次處理一個請求!

setdaemon:用於多執行緒處理,參考https://blog.csdn.net/zhangzheng0413/article/details/41728869

2.使用ThreadingMixIn:客戶端連結多執行緒版伺服器會建立一個新執行緒

與上述過程類似

(1)客戶端:建立TCP套接字->connect連線地址->sendall(message)->responce=sock.recv(BUFSIZE)->sock.close()

(2)繼承於BaseRequestHandler的類,修改handle函式

(3)建立繼承於ThreadMixIn和TCPServer的類

(4)主函式

故而此處需要強調兩種方法的不同,即執行緒和程序的區別,參考https://blog.csdn.net/yanxiaolx/article/details/51763372