網路程式設計專案規劃
最近在練習一個專案吧,大概給6天的時間來完成它,其中涉及到了資料庫的知識,網路程式設計,linux C等等,大考驗的時刻到了!我知道PM們的專案規劃圖絕對比我的高大上,但是我們也不能沒有自信對不?因此,我開始先分析我的專案它有什麼功能需求,需求分析完成了,OK,那麼專案應該大體上,又是靠什麼來實現的呢?這是一個最值得深究的問題!又有人說,那不是得用程式碼來實現嗎?等等,那樣你得寫到什麼時候?因而我們絕對不是先用程式碼去實現功能,而是把功能提取出來,瞭解他實現的過程!重要的是什麼?嘿嘿,讓我來告訴大家,最重要的是資料的協議,沒有好的資料協議,我們將會面臨的是無盡的BUG,因而協議是本文最終目的,當然非常希望大家通過留言,或者發郵件的方式來指出更加優化的地方,可以共同進步才是真的牛人!
附上我的郵箱:samuel_wnb@live.com
功能需求:
1、註冊
2、登陸
3、檢視登陸使用者
4、私聊
5、群發資訊
6、客戶端退出儲存資料
7、伺服器要備份資料
8、root許可權
踢出聊天室
禁言
解禁
登出
9、客戶端傳送表情
10、新增常用語
以上是我專案的功能,下面是我對功能的具體分析,涉及到網路程式設計,嗯,在做專案的過程中,想辦法抽出一定時間來寫一些關於呼叫網路的API的博文,希望大家到時關注,當然我會將我所做的專案公之於眾,開源的
-
註冊:
-
C :獲取使用者名稱&密碼&cmd
-
Send struct server
-
S :Check msg
檢查資料庫,有重名 返回0
檢查資料庫,可註冊 返回1
-
-
登陸:
-
C :獲取使用者名稱&密碼&cmd
-
Send struct server
-
3、S :Check msg
檢查資料庫,無此使用者 返回0
檢查資料庫,有此使用者 (1)、匹配密碼,不正確 返回1 (2)、正確返回2
-
檢視登陸使用者:
-
C :獲取cmd
-
向server傳送cmd
-
Server 傳送 return 使用者數
-
S 向 C寫 使用者名稱 寫 使用者數 次數
-
C向S讀 使用者名稱 讀 使用者數 次數
-
-
私聊
1、C :寫入 name 寫入 toname msg
2、send data to server
3、S:尋找toname 和線上情況 線上 且名字正確 返回 1
不線上 返回 0
查無此人 返回 -1
-
S:根據資料庫所得 向toname傳送 該資料協議
-
-
群發
1、C :寫入 name msg
2、send data to server
3、S:對比現在線上使用者 傳送資訊
-
儲存資料
Sqlite3資料庫
二維表關係
chatdata
Id |
名字 |
聊天記錄 |
User
Id |
使用者名稱 |
密碼 |
Online
Id |
使用者名稱 |
套接字 |
是否禁言 |
Serverdata
Id |
登陸時間 |
-
Root
踢出聊天室 從online 刪除
禁言 寫判斷 每次登陸都要測試是否被禁言
解禁 寫禁言命令
登出 直接從user 刪除 除非再註冊
-
客戶端傳送表情和新增常用語
跟私聊一樣!
經過上面的分析於是我決定使用下面我自己的資料結構體
資料協議 Struct message { Char name[100];//使用者名稱 Char passwd[100];//密碼 Int cmd; //命令 Int revert;//返回值 Char toname[100];//私聊物件 Char msg[100];//私聊內容 Int sockfd;//socket客戶端套接字 }; |