2010年2月17日 星期三

聊天室練習 - II. 程式架構

起初的構想是以一個對話框來取得暱稱及連線方式。如果用wxPython來做,應該會是個blockiing 的對話框。但在panda3D並沒有找到現有的對話框函數,因此將操作流程設計成有限狀態機,其行為如下圖描述。
Panda3D的FSM介紹參考這裡


當程式啟動時,進入Login狀態(ChatRoomMain.py,第43行),顯示Login界面(ChatRoomMain.py,第47行)來輸入 暱稱與連線方式,選擇成為server端(建立聊天室)或是client端(加入),成功建立連線後進入chatRoom狀態 (ChatRoomMain.py,第157行),顯示聊天室介面(ChatRoomMain.py,第55行),連線失敗則仍停留在Login狀態。
於ChatRoom狀態下,當client端失去與server的連線時,回到Login狀態(ChatRoomMain.py,第96行),若server端失去與client的連線則仍停留在ChatRoom狀態。
server端與client端以各別的方式,在ChatRoom狀態下,處理聊天室的文字輸入與顯示流程。server端與client端間的傳輸協定的目標為執行命令的同步--server端與所有client端都顯示相同順序的文字。
  • server端收集所有的文字輸入,包含server端與所有client端的文字輸入,再將收集的文字輸入串傳送給所有client,server再將這些收集的文字輸入串顯示於自身gui上。
  • client端送出自身的文字輸入給server端,如果收到server傳送的文字輸入串則顯示於自身gui。

詳細的server端與client端間的傳輸協定以及gui設計將稍後說明。



----

  1. 操作方式
  2. 程式架構
  3. 網路設定、接收與傳送
  4. Server - Client 間的傳輸協定
  5. 傳輸命令格式
  6. GUI
  7. 中文輸入與顯示
  8. 事件驅動

沒有留言: