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