調試遇到的問題不多,主要還是涉及到的一些指標問題,最主要的就是在建構函式中對指標成員的初始化問題,如果提供了自訂的建構函式,就容易忘記預設建構函式的初始化,以為預設建構函式自己不去掉用就不會有效,給調試帶來了一些麻煩。
用戶端整體來說不難,只要理清楚了哪些類負責完成什麼任務,需要維護一些什麼資料,就好辦了。 這裡的主對話方塊類主要負責維護介面,和伺服器互動,以及在必要條件下建立聊天視窗(如有離線訊息,有使用者串連請求,使用者主動聊天等)。 而聊天對話方塊則只負責和指定使用者進行資料互動,需要維護兩邊使用者資訊以及一個聊天通訊端。在收到或發送訊息時,它還需要維護自身聊天視窗的更新。由於CSocket內建多線程 所以整個工程都並未涉及到多線程。適用於少量使用者的區域網路 至於其他一些小功能,如儲存聊天記錄(用戶端),儲存使用者資訊(伺服器),以及最小化時產生托盤表徵圖等等。都與主要邏輯無關,都可以隨時單獨地加上即可。 本執行個體缺點很多: 最主要的就是使用者每次上下線都需要伺服器更新使用者列表後將整個使用者列表發送給使用者,而使用者收到之後需要複製整個列表並刪除之前的列表再重新整理整個視窗才能完成某使用者的一次上下線頭像更新。該缺點的改進方法是在聊天包中加入一個類型,如USERUPDATE 每次使用者上線或下線伺服器則發送該訊息包,並指明需要更新使用者狀態的使用者資訊,而用戶端在收到之後,對應更新即可。 還有就是前面提到的聊天對話方塊的關閉問題,該問題在前面已經商討瞭解決方案。 再其次就是安全性和完善性,使用者註冊並沒有提供足夠的資料,以及使用者資訊只是簡單的寫入檔案,伺服器甚至沒有安全性驗證。考慮到這些與通訊主體關係不大,因此都不夠完善。 到此整個區域網路聊天也就有了大概架構以及簡易功能實現,大部分代碼和思想都來自於參考書籍,逐步加上自己的理解,完成了這系列的開發流程的總結。總的來說,收益很多,特別是在總結的過程中,同學有一句話,據說是愛因斯坦的:"如果你不能簡單說清楚,說明你還沒有完全明白"。完整原始碼點擊這裡:http://download.csdn.net/detail/wudaijun/4911762