最新做了乙個基於tcp協議的模仿qq聊天系統,用到的新的知識不是很多,都是以前開發專案的時候常用的知識點,該系統使用c++開發,採用mfc框架實現介面,網路那塊只要是socket的應用,因為登入功能和訊息儲存的功能,該系統還用到了sql server 2008來實現資料管理。
因為用到的新的知識不是很多,加上有之前的專案開發經驗,該系統我只用了一天時間就實現了要求的功能,主要是一對
一、一對多、多對多(群聊)的聊天功能,還有就是訊息的儲存和刪除,比較困難實現的是檔案的傳輸功能,這個主要是因為要另外應用socket來實現,所以**量就增多了不少。
雖然用到的新的知識不是很多,但其中開發過程中的細節還是值得總結一下,為以後開發專案提供經驗。
在這裡,因為有一點之前沒有接觸,值得說明,向資料表中追加資料的sql語句:
update
表名 set msg=msg+'%s' where [name]='%s'
2.另外一點特別值得注意,在實現檔案傳輸的時候,因為要首先傳送檔名和大小資訊,之前的**:
// file tansport msg
else
if (msg.find(_t("fil")) == 0)// file tansport/from/msg
其中的infor就是檔案資訊,因為傳送的字串以「/」為分隔符,例如:
pri/小明/你好 表示一對一聊天:向小明傳送「你好「,
傳送檔案的時候以fil/小明/test.rar/267941
表示向小明傳送檔案test.rar,大小為267941位元組。
伺服器在解析訊息的時候,要以「/」為分隔符擷取字串,因為檔案資訊為test.rar/267941這樣增加了解析的難度,我在這裡足足想了好幾十分鐘,也沒實現擷取,後來聽了乙個**之後回來對著電腦,突然靈機一動,既然檔案資訊test.rar/267941為乙個主體傳送,我們最後收到之後才做近一步解析,所以就以test.rar|267941這樣的方式傳送,這樣就不必再因為和前面的「/」的解析發生衝突,而近一步解析為檔名和大小就類似前面,問題一下子就解決了。
總之一點,那就是很多時候換一種方式想問題,從整體到區域性,從大到小,問題往往得到很好的解決。
最後,還是說一下,開發專案很多時候**也不是看得很懂,如果以後真的想往這些方向走的話,還是要注重**的理解,但不懂不代表不可以做實戰專案,整體上我們學會了,細節出問題的時候我們也能及時解決,這並不影響我們開發實戰專案。做專案是需要及時總結和領會的,也是一條漫長的道路,需要及高難度的耐性和充沛的精力。
關於系統開發的心得
經過了這一段時間的學習,讓我對系統的開發有了一些淺顯的認識和感悟,下面就讓我陳述一下這些認識與感悟。首先,在開發乙個系統之前必須要寫出對於整個系統的規劃,並且規劃必須是你考慮相對周全後寫出的,而不是大體的,隨便的寫寫就結束了,因為在往後的系統開發中是離不開這個規劃的,如果沒有這個規劃一切就會變得十分...
系統開發 系統規劃
一 系統規劃五個階段 1 專案目標和動機 2 立項價值判斷 3 專案選擇和確定 4 初步調查 5 可行性研究 包括經濟可行性,技術可行性,法律可行性,使用者使用可行性 二 可行性分析八個階段 1 複查系統目標和規模 2 分析現在系統 3 匯出新系統的高層邏輯模型 4 使用者複查 5 提出並評價解決方...
聊天室開發心得
這是最開始的乙個架構圖 客戶端維護兩個鏈結,乙個是與閘道器的長鏈,用於接收下推的訊息和事件 乙個是與聊天室伺服器的短鏈 其實是經過了 lvs 的負載均衡 dr 用於發言 點讚 加入和退出聊天室。chatroom server 在收到使用者加入的請求後,將使用者資訊儲存在 redis 中。redis ...