SocketServer 模塊是標準庫中的一個高級模塊,他的目的是爲了簡化不少樣板代碼,他是建立網絡客戶端和服務器所必需的代碼,這個模塊中有爲你建立的各類各樣的模塊編程
類服務器 |
描述網絡 |
BaseServer異步 |
包含核心服務器功能和mix-in類的鉤子;僅用於推導,這樣不會建立這個類的實例;可使用TCPServer或UDPServer建立類的實例函數 |
TCPServer/UDPServerspa |
基礎的網絡同步TCP/UDP服務器線程 |
UnixStreamServer/UnixDatagramServer對象 |
基於文件的基礎同步TCP/UDP服務器事件 |
ForkingMixin/ThreadindMixin事務 |
核心派出或線程功能;只用做mix-in類於一個服務器類配合實現一些異步性;不能直接實例化這個類 |
ForkingTCPServer/ForkingUDPServer |
ForkingMixin和TCPServer/UDPServer的組合 |
ThreadingTCPServer/ThreadingUDPServer |
ThreadingMixin和TCPServer/UDPServer的組合 |
BaseRequesthandler |
包含處理服務請求的核心功能;僅僅用於推導,沒法建立這個類的實例; |
StreamRequestHandler/DatagramRequestHandler |
實現TCP/UDP服務器的服務處理器 |
除了爲你隱藏了實現細節以外,另外一個不一樣之處是,咱們如今使用類來編寫應用程序。由於以面向對象的方式處理事務有助於組織數據,以及邏輯性地將功能放在正確的地方。你還會注意到,應用程序如今是事件驅動的,這意味着只有在系統中的事件發生時,它們纔會工做。
事件包括消息的發送和接收。事實上,你會看到類定義只包括一個用來接收客戶端消息的事件處理程序。全部其餘的功能都來自使用的SocketServer類。此外,GUI編程(見第5章)也是事件驅動的。你會當即注意到它們的類似性,由於最後一行代碼一般是一個服務器的無限循環,它等待並響應客戶端的服務請求。它工做起來幾乎與本章前面的基礎TCP服務器中的無限while循環同樣。
在原始服務器循環中,咱們阻塞等待請求,當接收到請求時就對其提供服務,而後繼續等待。在此處的服務器循環中,並不是在服務器中建立代碼,而是定義一個處理程序,這樣當服務器接收到一個傳入的請求時,服務器就能夠調用你的函數。