




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上一、軟件簡介 本軟件主要完成簡單的多客戶端實時通信,基于TCP協議的局域網聊天軟件。首先啟動服務器,服務器啟動后等待客戶端的請求,同時顯示出離線用戶列表??蛻舳送ㄟ^輸入賬號和密碼進行登錄,如果登錄成功,則進入聊天界面,同時顯示當前在線好友列表和離線好友列表,如果登錄失敗,則提示用戶賬號或者密碼錯誤。當多個客戶端進入聊天室后,客戶之間可以進行群聊,用戶同時可以選擇與當前在線的某一好友進行私聊。二、需求分析2.1、任務概述 隨著信息化時代的快速發(fā)展,互聯網的應用越來越廣泛,同時實時聊天通信技術變得日益重要,不論在學校、家庭或者是公司,局域網聊天已經離不開我們的日常生活。本
2、軟件所設計的局域網聊天系統(tǒng)能夠實現局域網的聊天、群聊、私聊等功能。2.2、需求規(guī)定 該軟件可以完成多客戶端的通信,服務器端包括:服務器啟動,離線用戶列表和在線用戶列表,同時還要完成客戶端登錄信息的驗證,當有用戶登錄成功時,服務器端實時刷新在先用戶列表。客戶端包括:用戶登錄,當用戶登錄成功后,進入聊天界面,用戶之間可以進行群聊和私聊。2.3、對性能的規(guī)定2.3.1、時間特性要求 所有發(fā)送操作的響應的時間一般不超過1秒,大量的信息發(fā)送后,應該在5秒內顯示,如果未發(fā)送失敗,會提示出相關的錯誤信息。當存在離線用戶上線時,用戶在線列表更新時間在3秒內響應。2.3.2、運行環(huán)境規(guī)定 該軟件只能在windo
3、ws環(huán)境平臺下運行,內存在256M以上,硬盤1G空余空間。三、總體設計3.1、軟件總體功能結構圖圖(3.1) 軟件總體功能結構圖 如圖(3.1)所示為該軟件總體功能結構圖,其中主要包括兩大部分:服務器端和客戶端。其中服務器端主要包括:連接數據庫、用戶列表更新、客戶端信息處理。客戶端包括:客戶端登錄、在線用戶列表、離線用戶列表、用戶群聊、用戶私聊。3.2、軟件工作流程圖圖(3.2) 軟件工作流程圖 如圖(3.2)所示,為整個軟件工作的流程圖,首先開啟服務器,服務器等待客戶端的請求連接,然后客戶端發(fā)送連接請求(發(fā)送賬號和密碼),然后等待服務器的回應,服務器收到連接請求后,驗證客戶信息,如果信息驗證
4、成功,則連接建立成功,好友之間通過服務器端向客戶端發(fā)送好友信息。3.3、服務器總體設計服務器端主要功能: (1)數據庫設計:設計數據庫,用戶存儲客戶信息,例如用戶的賬號、密碼、昵稱等。(2)客戶端請求信息處理:主要用來處理用戶登錄驗證,如果驗證成功,則給客戶端回復登錄成功信息。(3)客戶端信息轉發(fā):主要完成客戶之間通信時,首先客戶發(fā)送信息給服務器,服務器端然后在轉發(fā)給其他的客戶。(4)用戶列表更新:主要用來處理當有新客戶端登錄成功后,對現在用戶列表和離線用戶列表進行更新。3.4、客戶端總體設計客戶端主要功能:(1)客戶端登錄:主要完成客戶端的登錄,客戶端輸入用戶名和密碼,然后進行登錄,如果登錄
5、成功,則跳轉到聊天模塊,如果登錄失敗,則提醒用戶名或者密碼錯誤。(2)連接服務器:通過當前輸入的賬號和密碼,連接服務器開啟的端口號。(3)實時通信模塊:主要完成在線用戶之間進行群聊和私聊。(4)用戶列表更新:主要顯示當前在線好友列表和離線好友列表。四、詳細設計4.1、軟件詳細的功能流程圖圖(4.1)軟件詳細功能流程圖4.2、數據庫設計 該系統(tǒng)采用的是微軟的Access數據庫,用來存放用戶信息,數據字典如下表所示:表(一)用戶信息字段名稱備注賬號昵稱StrName密碼strPass真實姓名strRealName性別strSex 本系統(tǒng)將數據庫操作封裝為一個類,方便開發(fā)人員的操作,相關的函數介紹如
6、下所示: 打開數據庫函數:void OpenDataBase(); 關閉數據庫函數:void CloseDataBase(); 打開記錄集:_RecordsetPtr& OpenRecordset(CString sql); 關閉記錄集:void CloseRecordset();4.3、程序中定義的核心數據結構1、定義消息頭的數據結構typedef struct tagHeaderchar type;intlen; Header, *pHeader; 以上結構體主要包含兩個部分內容,type為char型字符,用來存儲用戶發(fā)送的是什么類型的消息,type定義的取值如下所示:#defin
7、e LOGIN_IO 1 /用戶登錄消息#define SEND_MESSAGE 3/用戶發(fā)送消息#define PRIVATE_MESSAGE 4/用戶私聊消息#define PASS_SUCCESS 5/用戶密碼驗證成功消息#define PASS_FAILED 6/用戶密碼驗證失敗消息#define SERVER_STOP 7/服務器停止消息#define ASK_NUM 8/應答消息#define ASKNUM_FAILED 9/應答失敗消息#define PRIVATE_ASK 10/私聊應答消息#define PRIVATE_REFUSE 11/私聊拒絕消息 以上為該軟件定義的頭消
8、息結構的類型,主要包括:用戶登錄消息、用戶發(fā)送消息、用戶私聊消息、用戶密碼驗證成功消息、用戶密碼驗證失敗消息、服務器停止消息、應答消息、應答失敗消息、私聊應答消息、私聊拒絕消息。用戶通過發(fā)送不同的消息類型給服務器,服務器收到消息類型后進行判斷,依據不同的消息類型進行不同的處理。2、定義用戶登錄信息數據結構typedef struct LogonUserCString name;CString password; User, *pUser; 以上結構體主要包含兩部分:用戶名和密碼。當用戶登錄時,客戶端將用戶發(fā)送給服務器端,服務器端接收到后,對用戶名和密碼進行驗證。4.4、客戶端詳細設計1、用戶登
9、錄模塊(1)用戶登錄模塊流程圖圖(4.2) 用戶登錄模塊流程圖(2)程序描述 對在用戶登錄信息界面中輸入的各項信息進行初步檢驗。若發(fā)現錯誤,提示用戶輸入錯誤,讓用戶重新輸入一次。若未發(fā)現錯誤,轉入主界面。其中的錯誤種類有:輸入數據不匹配、賬號(數據庫沒有該賬號)、密碼(與對應賬號的密碼不匹配)。在登錄界面中,主要的函數為: 判斷是否為空:IdentifyNull(name,password,server); 創(chuàng)建套接字:CreateSocket(server); 發(fā)送賬號:SendName(name); 發(fā)送密碼:SendPssword(password); 其中發(fā)送賬號和密碼的函數為:/發(fā)送
10、用戶名void CDlgLogin:SendName(CString name)/設置發(fā)送類型head.type = LOGIN_IO;/發(fā)送長度head.len = 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 = p
11、assword.GetLength(); /發(fā)送驗證密碼PASS_SUCCESS命令字m_pSocket->Send(char *)&head,sizeof(Header);m_pSocket->Send(password,password.GetLength();2、群聊模塊(1)群聊模塊流程圖圖(4.3) 群聊模塊流程圖(2)程序描述 群聊主要完成多客戶端之間的通信,主要的函數及其功能如下: 更新用戶列表:UpdateUser() 接收消息:GetSendMessage() 發(fā)送消息:OnButtonSend() 其中發(fā)送消息的詳細程序代碼如下:void CChatCl
12、ientDlg:OnButtonSend() / TODO: Add your control notification handler code here/得到發(fā)送的消息內容CString messaegeContent;m_sendMessage.GetWindowText(messaegeContent);/判斷發(fā)送的消息是否為空消息if(messaegeContent = "")AfxMessageBox("不能發(fā)送空消息!");/設置鼠標的焦點CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SENDINFO
13、);pEdit->SetFocus();return;/發(fā)送消息的結構體Header head;/發(fā)送消息的命令字head.type = SEND_MESSAGE;/發(fā)送消息的長度head.len = messaegeContent.GetLength();/當前時間CTime time = CTime:GetCurrentTime();/時間格式CString t = time.Format("%H:%M:%S");/昵稱CString nikeName = theApp.m_strName;CString str = nikeName + " "
14、; + t + "rn" + " " +messaegeContent;/發(fā)送命令字m_pSocket->Send(char *)&head,sizeof(Header);/發(fā)送消息if(m_pSocket->Send(LPCTSTR)str, str.GetLength()/清空消息框m_sendMessage.SetWindowText("");CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_CHATINFO);pEdit->SetFocus();elseAfxMes
15、sageBox("網絡傳輸錯誤!");3、私聊模塊(1)私聊模塊流程圖圖(4.4) 私聊模塊流程圖(2)程序描述 私聊模塊主要實現點對點之間的通信,相關的函數如下所示: 發(fā)送消息:OnButtonSend() 獲取消息:GetMessage(CString strPrivtMsg) 其中發(fā)送消息的詳細代碼如下所示:void CPrivateDlg:OnButtonSend() / TODO: Add your control notification handler code hereCString sendMsg;m_sendMessage.GetWindowText(s
16、endMsg);if(sendMsg = "")AfxMessageBox("不能發(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();CString t = time.Format
17、("%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"+'&
18、amp;'/目的主機名+本地主機名+時間+回車換行+消息m_pSocket->Send(char *)&head,sizeof(Header); /發(fā)送離線消息命令字 LEAVE_MESSAGE,發(fā)送用戶名+時間+消息內容if(m_pSocket->Send(LPCTSTR)str, str.GetLength() /清空發(fā)送文本框m_sendMessage.SetWindowText("");/在接收文本框 顯示出來m_receiveMessage.ReplaceSel(str1);/在控件顯示消息UpdateData(FALSE);CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SEND);pEdit->SetFocus();elseAfxMessageBox("網絡傳輸錯誤!");.4.5、服務器端詳細設計1、啟動服務器,等待客戶連接 /創(chuàng)建sock
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐廳壁畫施工方案
- 水網地段管道施工方案
- 壁畫終端箱施工方案
- 2025年SYB創(chuàng)業(yè)培訓后的試題及答案
- 6年級上冊語文第十八課筆記
- 某航天機械能源公司投標書
- 2025年醫(yī)學經典考試題及答案
- 地災隱患點搬遷實施方案
- 2025年中山火炬職業(yè)技術學院單招職業(yè)傾向性測試題庫附答案
- 2025年甘肅省慶陽地區(qū)單招職業(yè)適應性測試題庫一套
- 寵物殯葬與環(huán)保處理
- IBM業(yè)務架構咨詢:制造業(yè)核心業(yè)務流程框架及解決方案 相關兩份資料
- 安徽省普通高校對口招生考試專業(yè)課和技能測試考試綱要(2023年版)010計算機類專業(yè)課考試綱要
- 新解讀《CJJ 92-2016城鎮(zhèn)供水管網漏損控制及評定標準(2018年版) 》
- 2024年大隊委競選筆試題庫
- 醫(yī)院考勤制度實施細則
- 肺結節(jié)診治中國專家共識(2024年版)解讀
- TSDDP 8-2024 新型無機磨石施工質量與驗收規(guī)范
- MES系統(tǒng)實施管理辦法
- 2024年新課標高考化學真題試題(原卷版+含解析)
- 《歷代志上下概論》課件
評論
0/150
提交評論