计算机网络课程设计双机通信“聊天热线”的制作设计.doc
《计算机网络课程设计双机通信“聊天热线”的制作设计.doc》由会员分享,可在线阅读,更多相关《计算机网络课程设计双机通信“聊天热线”的制作设计.doc(13页珍藏版)》请在三一办公上搜索。
1、目录1需求分析 21.1开发环境21.2功能要求213功能实现 22总体设计 32.1软件的运行环境设计 32.2客户端设计 32.3服务器端设计 43详细设计与系统实现 43.1客户端的实现 43.2服务器端的实现 84软件测试与性能分析 114.1软件测试 114.2性能分析 125设计总结126参考文献13“聊天热线”的制作 -网络通信软件设计报告1. 需求分析1.1 开发背景随着数据通信技术的发展特别是计算机技术的发展,网络已成为信息传播的重要渠道,在很多C/S软件中,都提供了在线交流的功能,类似QQ、UC、网络聊天室一类的聊天系统的发展日新月异。因此,制作了一个网络“聊天热线”,通过
2、制作该软件更好的学习网络编程原理和实现技术。1.2 功能要求客户端需要完成的功能:(1)通过IP地址和端口号请求与服务器连接。(2)可以向服务器发送消息。(3)如果服务器端断开,在列表中给出响应提示。(4)可以清空和保存历史聊天记录。(5)可以查看版本信息。(6)文件传输。服务器端需要完成的功能:(1)打开本地端口,并对其进行监控。(2)当接收到连接请求时打开与客户端的连接,并将连接的信息显示在列表中。(3)当接收到客户端发来的消息时将其显示在列表中。(4)可以回复客户端。(5)可以清空和保存历史聊天记录。(6)可以查看版本信息。(7)当接收到客户端关闭请求时,断开与客户端的连接。(8)文件传
3、输。1.3 功能实现考虑到通信软件制作的复杂性和课程设计的时间问题,设计的“聊天热线”主要实现了以下功能:客户端实现的功能:(1)通过IP地址和端口号与服务器连接验证成功。(2)向服务器发送消息验证功能。(3)服务器端断开,在列表中给出响应提示。(4)清空和保存历史聊天记录验证功能。(5)查看版本信息。服务器端实现的功能:(1)打开并监控本地端口。(2)与客户端连接的信息显示在列表中验证功能。(3)客户端发来的消息显示在列表中验证功能。(4)回复客户端。(5)清空和保存历史聊天记录。(6)查看版本信息。(7)接受到客户端关闭请求,断开与客户端的连接。2总体设计设计思想:为实现网络聊天的功能,采
4、用Windows Socket编程。在设计聊天方案时,客户端通过IP地址和端口号与服务器端连接,服务器端监听到连接请求,进行响应;建立连接之后客户端将信息发往服务器端,再由服务器端进行分别处理。客户端和服务器端都实现清空和保存历史聊天记录。“聊天热线”制作的总体设计包括:l 软件的运行环境设计l 客户端设计l 服务器端设计2.1 软件的运行环境设计为了保证系统运行的效率和可靠性,一般情况下,服务器端应具有较高的软硬件配置,客户端的要求不需要很高。此应用程序虽适用于Internet和内部局域网,但只是为了进一步学习网络编程知识,应用不够广泛,所以对软硬件配置不是太高。1. 软件环境l 客户端:W
5、indows 98,Microsoft Visual C+ 6.0以上版本l 服务器端:Windows 98/2000,Microsoft Visual C+ 6.0以上版本2. 硬件环境l 客户机:CPU要求200MMX以上,内存64MB以上l 服务器端:CPU要求200MMX以上,内存64MB以上2.2 客户端设计根据需求分析和功能要求,对客户端各个功能进行集中、分块,本软件客户端的功能模块图如图1所示。客户端通过IP地址和端口号请求与服务器连接客户端列表显示向服务器发送的消息清空和保存历史聊天记录服务器端断开, 客户端列表给出响应提示查看版本信息图1 客户端功能模块图2.3 服务器端设计
6、根据需求分析和功能要求,对服务器端各个功能进行集中、分块,本软件服务器端的功能模块图如图2所示。服务器端服务器端列表显示与客户端连接的信息服务器端列表显示客户端发来的消息清空和保存历史聊天记录服务器端回复客户端消息查看版本信息客户端关闭 ,服务器端列表显示断开信息打开本地端口并对其进行监控图2 服务器端功能模块图3. 详细设计与系统实现3.1 客户端的实现建立一个基于Dialogbased的MFC AppWizard项目,其中使用静态文本控件、按扭控件、IP地址控件、编辑控件、组控件、和列表控件等各种常用控件,以及通过Socket进行网络通信编程。1. 从CAsyncSocket派生出类CCl
7、ientSocket,其头文件如下:class CClientSocket : public CAsyncSocket/ Attributespublic:/ Operationspublic:CClientSocket();virtual CClientSocket();/ Overridespublic:/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CClientSocket)public:virtual void OnConnect(int nErrorCode);virtual void OnReceive
8、(int nErrorCode);virtual void OnClose(int nErrorCode);/AFX_VIRTUAL/ Generated message map functions/AFX_MSG(CClientSocket)/ NOTE - the ClassWizard will add and remove member functions here./AFX_MSG/ Implementationprotected:;2. 类CClientSocket中重写三个成员函数:OnConnect、OnReceive、OnClose,代码如下:void CClientSock
9、et:OnConnect(int nErrorCode) / TODO: Add your specialized code here and/or call the base classif(nErrorCode)AfxMessageBox(连接出现错误,请您重新连接!);return;AsyncSelect(FD_READ|FD_WRITE|FD_CLOSE);(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-ServerIP.EnableWindow(FALSE);(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_B
10、uttonConnect.EnableWindow(FALSE);(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_ButtonSend.EnableWindow();(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_ListWords.AddString(连接上服务器端);(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_ListWords.SetTopIndex(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_ListWords.GetCo
11、unt()-1);CAsyncSocket:OnConnect(nErrorCode);void CClientSocket:OnReceive(int nErrorCode) / TODO: Add your specialized code here and/or call the base classchar szTemp250;int n=Receive(szTemp,250);szTempn=0;CString sTemp;sTemp.Format(收到:%s,szTemp);(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_ListWords.
12、AddString(sTemp);(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_ListWords.SetTopIndex(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_ListWords.GetCount()-1);CAsyncSocket:OnReceive(nErrorCode);void CClientSocket:OnClose(int nErrorCode) / TODO: Add your specialized code here and/or call the base class(CChatC
13、lientDlg*)(AfxGetApp()-m_pMainWnd)-m_ListWords.AddString(服务器端已经断开);(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_ListWords.SetTopIndex(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_ListWords.GetCount()-1);(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-ServerIP.EnableWindow();(CChatClientDlg*)(AfxGetApp()-m_pM
14、ainWnd)-m_ButtonConnect.EnableWindow();(CChatClientDlg*)(AfxGetApp()-m_pMainWnd)-m_ButtonSend.EnableWindow(FALSE);Close();CAsyncSocket:OnClose(nErrorCode);3. 类CChatClientDlg中添加5个事件处理函数,代码如下:void CChatClientDlg:OnButtonConnect() / TODO: Add your control notification handler code hereBYTE nFild4;Updat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计 双机 通信 聊天 热线 制作 设计
链接地址:https://www.31ppt.com/p-2401440.html