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