版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、-. z.一、軟件簡介本軟件主要完成簡單的多客戶端實時通信,基于TCP協(xié)議的局域網(wǎng)聊天軟件。首先啟動效勞器,效勞器啟動后等待客戶端的請求,同時顯示出離線用戶列表??蛻舳送ㄟ^輸入賬號和密碼進(jìn)展登錄,如果登錄成功,則進(jìn)入聊天界面,同時顯示當(dāng)前在線好友列表和離線好友列表,如果登錄失敗,則提示用戶賬號或者密碼錯誤。當(dāng)多個客戶端進(jìn)入聊天室后,客戶之間可以進(jìn)展群聊,用戶同時可以選擇與當(dāng)前在線的*一好友進(jìn)展私聊。二、需求分析2.1、任務(wù)概述隨著信息化時代的快速開展,互聯(lián)網(wǎng)的應(yīng)用越來越廣泛,同時實時聊天通信技術(shù)變得日益重要,不管在學(xué)校、家庭或者是公司,局域網(wǎng)聊天已經(jīng)離不開我們的日常生活。本軟件所設(shè)計的局域網(wǎng)聊
2、天系統(tǒng)能夠?qū)崿F(xiàn)局域網(wǎng)的聊天、群聊、私聊等功能。2.2、需求規(guī)定該軟件可以完成多客戶端的通信,效勞器端包括:效勞器啟動,離線用戶列表和在線用戶列表,同時還要完成客戶端登錄信息的驗證,當(dāng)有用戶登錄成功時,效勞器端實時刷新在先用戶列表。客戶端包括:用戶登錄,當(dāng)用戶登錄成功后,進(jìn)入聊天界面,用戶之間可以進(jìn)展群聊和私聊。2.3、對性能的規(guī)定、時間特性要求所有發(fā)送操作的響應(yīng)的時間一般不超過1秒,大量的信息發(fā)送后,應(yīng)該在5秒顯示,如果未發(fā)送失敗,會提示出相關(guān)的錯誤信息。當(dāng)存在離線用戶上線時,用戶在線列表更新時間在3秒響應(yīng)。、運行環(huán)境規(guī)定該軟件只能在windows環(huán)境平臺下運行,存在256M以上,硬盤1G空余
3、空間。三、總體設(shè)計3.1、軟件總體功能構(gòu)造圖圖(3.1) 軟件總體功能構(gòu)造圖如圖3.1所示為該軟件總體功能構(gòu)造圖,其中主要包括兩大局部:效勞器端和客戶端。其中效勞器端主要包括:連接數(shù)據(jù)庫、用戶列表更新、客戶端信息處理??蛻舳税ǎ嚎蛻舳说卿?、在線用戶列表、離線用戶列表、用戶群聊、用戶私聊。3.2、軟件工作流程圖圖(3.2) 軟件工作流程圖如圖3.2所示,為整個軟件工作的流程圖,首先開啟效勞器,效勞器等待客戶端的請求連接,然后客戶端發(fā)送連接請求發(fā)送賬號和密碼,然后等待效勞器的回應(yīng),效勞器收到連接請求后,驗證客戶信息,如果信息驗證成功,則連接建立成功,好友之間通過效勞器端向客戶端發(fā)送好友信息。3.
4、3、效勞器總體設(shè)計效勞器端主要功能:1數(shù)據(jù)庫設(shè)計:設(shè)計數(shù)據(jù)庫,用戶存儲客戶信息,例如用戶的賬號、密碼、昵稱等。2客戶端請求信息處理:主要用來處理用戶登錄驗證,如果驗證成功,則給客戶端回復(fù)登錄成功信息。3客戶端信息轉(zhuǎn)發(fā):主要完成客戶之間通信時,首先客戶發(fā)送信息給效勞器,效勞器端然后在轉(zhuǎn)發(fā)給其他的客戶。4用戶列表更新:主要用來處理當(dāng)有新客戶端登錄成功后,對現(xiàn)在用戶列表和離線用戶列表進(jìn)展更新。3.4、客戶端總體設(shè)計客戶端主要功能:1客戶端登錄:主要完成客戶端的登錄,客戶端輸入用戶名和密碼,然后進(jìn)展登錄,如果登錄成功,則跳轉(zhuǎn)到聊天模塊,如果登錄失敗,則提醒用戶名或者密碼錯誤。2連接效勞器:通過當(dāng)前輸入
5、的賬號和密碼,連接效勞器開啟的端口號。3實時通信模塊:主要完成在線用戶之間進(jìn)展群聊和私聊。4用戶列表更新:主要顯示當(dāng)前在線好友列表和離線好友列表。四、詳細(xì)設(shè)計4.1、軟件詳細(xì)的功能流程圖圖(4.1)軟件詳細(xì)功能流程圖4.2、數(shù)據(jù)庫設(shè)計該系統(tǒng)采用的是微軟的Access數(shù)據(jù)庫,用來存放用戶信息,數(shù)據(jù)字典如下表所示:表一用戶信息字段名稱備注賬號昵稱StrName密碼strPass真實strRealName性別strSe*本系統(tǒng)將數(shù)據(jù)庫操作封裝為一個類,方便開發(fā)人員的操作,相關(guān)的函數(shù)介紹如下所示:翻開數(shù)據(jù)庫函數(shù):void OpenDataBase();關(guān)閉數(shù)據(jù)庫函數(shù):void CloseDataBas
6、e();翻開記錄集:_RecordsetPtr& OpenRecordset(CString sql);關(guān)閉記錄集:void CloseRecordset();4.3、程序中定義的核心數(shù)據(jù)構(gòu)造1、定義消息頭的數(shù)據(jù)構(gòu)造typedef struct tagHeaderchar type;intlen; Header, *pHeader;以上構(gòu)造體主要包含兩個局部容,type為char型字符,用來存儲用戶發(fā)送的是什么類型的消息,type定義的取值如下所示:#define LOGIN_IO 1 /用戶登錄消息#define SEND_MESSAGE 3/用戶發(fā)送消息#define PRIVATE_ME
7、SSAGE 4/用戶私聊消息#define PASS_SUCCESS 5/用戶密碼驗證成功消息#define PASS_FAILED 6/用戶密碼驗證失敗消息#define SERVER_STOP 7/效勞器停頓消息#define ASK_NUM 8/應(yīng)答消息#define ASKNUM_FAILED 9/應(yīng)答失敗消息#define PRIVATE_ASK 10/私聊應(yīng)答消息#define PRIVATE_REFUSE 11/私聊拒絕消息以上為該軟件定義的頭消息構(gòu)造的類型,主要包括:用戶登錄消息、用戶發(fā)送消息、用戶私聊消息、用戶密碼驗證成功消息、用戶密碼驗證失敗消息、效勞器停頓消息、應(yīng)答消息、
8、應(yīng)答失敗消息、私聊應(yīng)答消息、私聊拒絕消息。用戶通過發(fā)送不同的消息類型給效勞器,效勞器收到消息類型后進(jìn)展判斷,依據(jù)不同的消息類型進(jìn)展不同的處理。2、定義用戶登錄信息數(shù)據(jù)構(gòu)造typedef struct LogonUserCString name;CString password; User, *pUser;以上構(gòu)造體主要包含兩局部:用戶名和密碼。當(dāng)用戶登錄時,客戶端將用戶發(fā)送給效勞器端,效勞器端接收到后,對用戶名和密碼進(jìn)展驗證。4.4、客戶打量細(xì)設(shè)計1、用戶登錄模塊1用戶登錄模塊流程圖圖(4.2)用戶登錄模塊流程圖2程序描述對在用戶登錄信息界面中輸入的各項信息進(jìn)展初步檢驗。假設(shè)發(fā)現(xiàn)錯誤,提示用戶
9、輸入錯誤,讓用戶重新輸入一次。假設(shè)未發(fā)現(xiàn)錯誤,轉(zhuǎn)入主界面。其中的錯誤種類有:輸入數(shù)據(jù)不匹配、賬號數(shù)據(jù)庫沒有該賬號、密碼與對應(yīng)賬號的密碼不匹配。在登錄界面中,主要的函數(shù)為:判斷是否為空:IdentifyNull(name,password,server);創(chuàng)立套接字:CreateSocket(server);發(fā)送賬號:SendName(name);發(fā)送密碼:SendPssword(password);其中發(fā)送賬號和密碼的函數(shù)為:/發(fā)送用戶名void CDlgLogin:SendName(CString name)/設(shè)置發(fā)送類型head.type = LOGIN_IO;/發(fā)送長度head.len
10、= name.GetLength();/發(fā)送登陸LOGIN_IO命令字m_pSocket-Send(char *)&head,sizeof(Header);/發(fā)送賬號m_pSocket-Send(name,name.GetLength();/發(fā)送密碼void CDlgLogin:SendPssword(CString password)head.type = PASS_SUCCESS;head.len = password.GetLength(); /發(fā)送驗證密碼PASS_SUCCESS命令字m_pSocket-Send(char *)&head,sizeof(Header);m_pSocke
11、t-Send(password,password.GetLength();2、群聊模塊1群聊模塊流程圖圖(4.3)群聊模塊流程圖2程序描述群聊主要完成多客戶端之間的通信,主要的函數(shù)及其功能如下:更新用戶列表:UpdateUser()接收消息:GetSendMessage()發(fā)送消息:OnButtonSend()其中發(fā)送消息的詳細(xì)程序代碼如下:void CChatClientDlg:OnButtonSend() / TODO: Add your control notification handler code here/得到發(fā)送的消息容CString messaegeContent;m_sen
12、dMessage.GetWindowTe*t(messaegeContent);/判斷發(fā)送的消息是否為空消息if(messaegeContent = )Af*MessageBo*(不能發(fā)送空消息!);/設(shè)置鼠標(biāo)的焦點CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SENDINFO);pEdit-SetFocus();return;/發(fā)送消息的構(gòu)造體Header head;/發(fā)送消息的命令字head.type = SEND_MESSAGE;/發(fā)送消息的長度head.len = messaegeContent.GetLength();/當(dāng)前時間CTime ti
13、me = CTime:GetCurrentTime();/時間格式CString t = time.Format(%H:%M:%S);/昵稱CString nikeName = theApp.m_strName;CString str = nikeName + + t + rn + +messaegeContent;/發(fā)送命令字m_pSocket-Send(char *)&head,sizeof(Header);/發(fā)送消息if(m_pSocket-Send(LPCTSTR)str, str.GetLength()/清空消息框m_sendMessage.SetWindowTe*t();CEdit
14、 *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_CHATINFO);pEdit-SetFocus();elseAf*MessageBo*(網(wǎng)絡(luò)傳輸錯誤!);3、私聊模塊1私聊模塊流程圖圖(4.4)私聊模塊流程圖2程序描述私聊模塊主要實現(xiàn)點對點之間的通信,相關(guān)的函數(shù)如下所示:發(fā)送消息:OnButtonSend()獲取消息:GetMessage(CString strPrivtMsg)其中發(fā)送消息的詳細(xì)代碼如下所示:void CPrivateDlg:OnButtonSend() / TODO: Add your control notification handler
15、code hereCString sendMsg;m_sendMessage.GetWindowTe*t(sendMsg);if(sendMsg = )Af*MessageBo*(不能發(fā)送空消息!);CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SEND);pEdit-SetFocus();return;Header head;if(theApp.PrivateOrLeave)head.type = LEAVE_MESSAGE;head.len = sendMsg.GetLength();CTime time = CTime:GetCurrentTime
16、();CString t = time.Format(%H:%M:%S);CString str1 = theApp.m_strName + + t + rn + +sendMsg+rn;CString str =theApp.m_strLeaveDesName+&+ theApp.m_strName +&+theApp.m_strName+t+rn + +sendMsg+rn+&;/目的主機(jī)名+本地主機(jī)名+時間+回車換行+消息m_pSocket-Send(char *)&head,sizeof(Header); /發(fā)送離線消息命令字 LEAVE_MESSAGE,發(fā)送用戶名+時間+消息容if(
17、m_pSocket-Send(LPCTSTR)str, str.GetLength() /清空發(fā)送文本框m_sendMessage.SetWindowTe*t();/在接收文本框顯示出來m_receiveMessage.ReplaceSel(str1);/在控件顯示消息UpdateData(FALSE);CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SEND);pEdit-SetFocus();elseAf*MessageBo*(網(wǎng)絡(luò)傳輸錯誤!);.4.5、效勞器打量細(xì)設(shè)計1、啟動效勞器,等待客戶連接 /創(chuàng)立socket對象CServerSocket *m_pSocket;m_pSocket = new CServerSocket;if(!m_pSocket-Create(9999)Af*MessageBo*(創(chuàng)立Socket失敗!);return FALSE;if(!m_pSocket-Listen()Af*MessageBo*(創(chuàng)立偵聽發(fā)生錯誤!);return FALSE;2、用戶列表更新1用戶列表更新流程圖圖(4.5)用戶列表更新流程圖2程序描述在線用戶列表和離線用戶列表實時更新: UpdateUser(CServerClientSocket *pSocket
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川電影電視學(xué)院《表演基礎(chǔ)訓(xùn)練》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《園林樹木學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《水利工程施工與組織》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《臨床藥物動力學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《管理文秘》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《教學(xué)簡筆畫》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《伺服電機(jī)及控制》2022-2023學(xué)年期末試卷
- 沈陽理工大學(xué)《面向?qū)ο蟪绦蛟O(shè)計(Java)》2021-2022學(xué)年期末試卷
- 沈陽理工大學(xué)《機(jī)械工程材料及其加工工藝》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《翻譯批評與賞析》2022-2023學(xué)年第一學(xué)期期末試卷
- 部編版2024-2025學(xué)年語文五年級上冊第4單元-單元測試卷(含答案)
- 大學(xué)與文化傳承智慧樹知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- 2024年心理咨詢師(中科院心理研究所版)考試題庫大全-上(單選題)
- 2024春形勢與政策課件當(dāng)前國際形勢與中國原則立場
- 一年級拼音默寫表
- 小學(xué)三年級下冊道德與法治課件-8.大家的朋友-部編版(15張)課件
- 南昌市南京路醫(yī)藥谷工程勘察報告資料
- TAPP手術(shù)技巧精品課件講座
- 信貸A初級題庫(判斷、單選題、多選題)
- 不銹鋼面板吊頂施工工藝(詳細(xì))
- 使用INSITE刷寫ECM標(biāo)定操作指導(dǎo)PPT課件
評論
0/150
提交評論