你是否想過用所學的Python開發一個圖形界面的聊天室程式啊? 像這樣的: 如果你想開發這樣一個有點懷舊風格的聊天程式,那麼可以接著看; 要開發這個聊天程式,你需要具備以下知識點: asyncore 、asynchat模塊使用 wxPython 圖形開發 這個聊天程式的實驗原理如下: 由於 Pyth ...
你是否想過用所學的Python開發一個圖形界面的聊天室程式啊?
像這樣的:
如果你想開發這樣一個有點懷舊風格的聊天程式,那麼可以接著看;
要開發這個聊天程式,你需要具備以下知識點:
- asyncore 、asynchat模塊使用
- wxPython 圖形開發
這個聊天程式的實驗原理如下:
由於 Python 是一門帶 GIL 的語言,所以在 Python 中使用多線程處理IO操作過多的任務並不是很好的選擇。同時聊天伺服器將同多個 socket 進行通信,所以我們可以基於 asyncore 模塊實現聊天伺服器。
aysncore 模塊是一個非同步的 socket 處理器,通過使用該模塊將大大簡化非同步編程的難度。asynchat 模塊在 asyncore 模塊的基礎上做了進一步封裝,簡化了基於文本協議的忘了通信任務的開發難度。
既然要開發聊天程式,那必然需要設計聊天時使用的協議。為了簡單起見,我們將要開發的聊天伺服器只支持文本協議,通過command message的方式調用相關的操作。比如如果客戶端發送以下文本,將執行相應的操作
# 登錄操作
login\n
# 在聊天室中發表 hello 內容
say hello\n
# 查看聊天室線上用戶
look\n
# 退出登錄
logout\n
以上協議流中,login, say, look, logout 就是相關協議代碼。
開發步驟如下:
- 1、伺服器類:一個聊天伺服器類,通過繼承 asyncore 的 dispatcher 類來實現;
- 2、 會話類:有了伺服器類還需要能維護每個用戶的連接會話,這裡繼承 asynchat 的
async_chat
類來實現; - 3、協議命令解釋器:聊天伺服器的協議,具體來說就是處理用戶登錄,退出,發消息,查詢線上用戶的代碼;
- 4、房間:實現聊天室的房間了,這裡我們定義了三種房間,分別是用戶剛登錄時的房間、聊天的房間和退出登錄的房間;
- 5、登陸視窗:實現客戶端了;
- 6、聊天視窗:聊天視窗中最主要的就是向伺服器發消息並接受伺服器的消息;
嗯,什麼?光看這個原理和開發步驟還是不會具體的開發,不會寫代碼?那我給你詳細的開發教程,看麽?!
【python 實現文字聊天室】
這個教程詳細的介紹了開發步驟和開發代碼,帶你一步一步的實現這個文字聊天室,而且還有線上開發環境,你可以跟著動手去操作哦;