网络编程技术课程设计报告样本.doc
《网络编程技术课程设计报告样本.doc》由会员分享,可在线阅读,更多相关《网络编程技术课程设计报告样本.doc(34页珍藏版)》请在咨信网上搜索。
1、 课程设计(论文)题 目 名 称 聊天软件开发 课 程 名 称 网络编程技术课程设计 学 生 姓 名 学 号 系 、专 业 指 导 教 师 5月 22日摘 要聊天程序普通采用互连网中继聊天合同,即双方即时通信过程中必要通过第三方中转,第三方为服务器,聊天程序普通采用UDP合同,在基于UDP合同基本上,聊天过程中消息发送必要遵守某一种商定,这种商定规定了“进入聊室”、“发送聊天信息”和“离开聊天室”数据传播格式,中转者(服务器)通过接受客户端不同数据格式来进行判断消息发送者欲进行操作,然后对消息进行解决后再进行转发。本次课程设计重要是运用MFC所提供各种控件,基于C/S模式,设计一种简朴聊天软件
2、。核心词:Visual C+6.0,客户端-服务器(C/S)构造,简朴聊天软件目 录1 前言12 需求分析12.1 任务和规定12.2 应实现功能22.3 界面及控件变量23 分析和设计43.1 系统分析及设计思路43.2 重要控件功能53.3 程序流程图6(一)流程运营框架6(二)服务端7(三)客户端94 详细代码实现124.1 服务器124.2客户端185 课程设计总结245.1 程序运营成果或预期运营成果245.2 设计结论25参照文献27致 谢271 前言本次课程设计重要是运用MFC所提供各种控件,基于C/S模式,设计一种简朴聊天软件。聊天软件由客户端和服务器两某些构成,服务器充当“中
3、转者”职能,客户端将自己消息一方面发给服务器,服务器再依照需要将它们转发给其她客户端。聊天程序普通采用互连网中继聊天合同,即双方即时通信过程中必要通过第三方中转,第三方为服务器,聊天程序普通采用UDP合同,在基于UDP合同基本上,聊天过程中消息发送必要遵守某一种商定,这种商定规定了”进入聊天室”,”发送聊天信息”和”离开聊天室”数据传播格式,中转者(服务器)通过接受客户端不同数据格式来进行判断消息发送者欲进行操作,然后对消息进行解决后再进行转发,服务器依照接受到不同消息格式做出不同解决。2 需求分析2.1 任务和规定本次课程设计内容任务是简朴群聊软件设计与实现。三人以上为一组,其中一种同窗为群
4、聊软件服务器端,此外同窗为群聊软件客户端,服务器启动后发布其IP地址和端标语,客户端用服务器IP地址和端标语进行登录,观测服务器与客户端显示成果,然后由客户端发送群聊消息,观测服务器与各客户端显示成果。详细规定如下:1.采用客户端服务器(C/S)构造,聊天室软件由客户端和服务器两某些构成,即创立两个工程,服务器(SelfRoom)和客户端(SelfChat)。2.服务器对话框界面应具备聊天室IP、端口、启动、关闭、聊天室动态、在线顾客等基本内容,而客户端对话框界面应具备昵称、聊天室IP、端口、登录、离开、聊天记录、在线朋友等基本内容,添加相应成员函数,使程序能正常运营。3.聊天程序采用UDP合
5、同,基于UDP合同聊天过程中遵守一种商定,这种商定规定了“进入或离开聊天室”和“发送聊天信息”数据传播格式,服务器作为“中转者”通过接受客户端不同数据格式来进行判断消息发送者欲进行操作,然后对消息进行解决后再进行转发。2.2 应实现功能本次课程设计内容是群聊软件设计与实现,采用MFC类编程。下面简介一下服务器和客户端所实现功能。服务器界面中有管理员、聊天室IP、端口、聊天室动态和在线顾客列表,尚有“启动”、“关闭”、“退出”按钮。运营服务器时,先进行管理员、聊天室IP、端口配备,点击“启动”按钮后,聊天室动态文本框里会显现“聊天室启动成功”等消息以及当时得时间,便可等待成员加入;当有成员加入时
6、,也会有相应提示信息,顾客列表也会及时更新;当客户端发来消息,服务器会将此消息转发给每一种成员;当列表中所有成员都离开时,服务器可点击“关闭”,即关闭聊天室。客户端界面有您昵称、聊天室IP、端口、聊天文本框、在线朋友列表,尚有“进入”、“离开”、“发送”按钮。运营客户端时,先进行昵称、聊天室IP、端口配备,点击“进入”按钮,与服务器进行了连接;连接成功后,可发送聊天消息点击“发送”就能将消息发送到服务器,让服务器进行解决,发送信息会显示在聊天框里,每条消息前面还附有发送消息时时间,在线朋友列表中会显示已进入聊天室成员,可以与她们进行群聊,由于这只是简朴群聊软件,因此只能发送文字信息,不具备发送
7、表情、文献等高档功能;当有成员加入或离开聊天室时,聊天框内会有提示信息,在线朋友列表也会即时更新;当客户端想离开时,可以点击“离开”按钮,即可退出聊天室。2.3 界面及控件变量(一)服务器运营界面,如图2.1。图2.1 服务器界面图(二)客户端运营界面,如图2.2。图2.2客户端运营界面图3 分析和设计3.1 系统分析及设计思路本次聊天软件采用MFC编程,需要创立2个工程,分别是客户端工程SelfChat和服务器工程SelfRoom,由于本次软件需用到套接字类,因此在创立工程时候需要选取“Windows Sockets”复选框,并都基于基本对话框。在制作服务器时候需要添加两个基于CSocket
8、套接字:CClientSocket(用来监听)和CServerSocket(为每个加入聊天室客户端生成一种相应对象与之通信),此外添加一种C+构造体tagHeader(用于客户端和服务器之间辨识消息类型)。在制作客户端时添加一种基于CSocket套接字类CClientSocket(用于连接服务器通信),和服务器同样要添加一种C+构造体tagHeader。整个流程中事件时序如下:1. 服务器配备管理员、聊天室IP以及端口后,单击“启动”按钮,此时服务器积极调用Listen()开始监听。2. 客户端配备昵称、聊天室IP以及端口后,单击“进入”按钮,此时客户端向服务器发起连接Connect()祈求,
9、若祈求被接受,则紧接着发送会话消息。3. 服务器CServerSocket类接受祈求并触发OnAccept()事件,该事件过程创立相应祈求方客户端CClientSocket类对象并添加到Socket队列。4. 更多成员客户端加入时,服务器重复环节3。5. 某个成员(客户端)要发送聊天消息时,在发送信息文本框中编辑文字,单击“发送”按钮向服务器发出消息。6. 某个成员(客户端)发来消息到达服务器,触发服务器Socket队列中相应当客户端CClientSocket类对象OnReceive()事件,对发来消息进行解决。7. 服务器上相应当客户端CClientSocket类对象,依照消息头tagHea
10、der构造中type字段辨别消息类型:若type=LOGIN_IO,则表达有新成员加入,用广播方式告知所有其她成员客户端,并调用服务器UpdateUser()更新服务器顾客列表;若type=SEND_MESSAGE,则表达这只是普通成员发言信息,直接广播转发该消息就可以了。8. 服务器发出消息到达客户端,触发客户端本地OnReceive()事件,客户端本地Socket依照消息头tagHeader构造中type字段辨识消息类型:若type=LOGIN_IO,则表达有新成员加入或已有聊天成员下线退出,于是调用客户端UpdateUser()函数更新本地顾客列表;若type=SEND_MESSAGE,
11、则表达这是聊天室中其她成员发来消息,调用GetMsgFromRoom()函数接受之后显示在客户端屏幕上。9. 某个成员要下线时,单击“离开”按钮,关闭本地Socket。10. 一旦某成员退出,关闭了自己客户端程序本地Socket,就会触发其在服务器上Socket队列中相应CClientSocket类对象Onclose()事件,由CClientSocket类对象发消息告知其她成员有人退出,并调用UpdateUser()更新服务器顾客列表。11. 当最后一种成员离开聊天室后,管理员可单击“关闭”按钮关闭服务器。3.2 重要控件功能服务器重要控件功能见表3.1,客户端重要控件功能见表3.2。控件功能
12、“管理员”文本框配备管理员名称IP控件配备聊天室IP“端口”文本框配备聊天室端口“聊天室动态”只读文本框显示聊天室动态,涉及聊天室启动、关闭提示信息,成员登录、离开提示信息以及聊天消息“顾客在线”列表框显示已进入聊天室成员“启动”按钮启动聊天室“关闭”按钮关闭聊天室“退出”按钮退出表3.1服务器重要控件功能控件功能“您昵称”文本框配备昵称IP控件配备聊天室IP“端口”文本框配备聊天室端口“在线朋友”列表框显示已进入聊天室成员“聊天”只读文本框显示聊天室动态,涉及聊天室启动、关闭提示信息,成员登录、离开提示信息以及聊天消息“发送”信息文本框编辑要发送消息“发送”按钮将消息发送出去“进入”按钮进入
13、聊天室“离开”按钮离开聊天室“退出”按钮退出表3.2客户端重要控件功能3.3 程序流程图(一)流程运营框架图3.1 流程运营框架程序流程图(二)服务端1.服务器“启动”按钮程序流程图 如图3.2图3.2 服务器“启动”按钮程序流程图2.客户端发送消息到达服务器后,触发服务器Socket队列相应当客户端给套接字OnReceive()事件 如图3.3图3.3 服务器OnReceive()事件程序流程图3.服务器UpdateUser函数过程流程图 如图3.4图3.4 服务器UpdateUser函数程序流程图4.服务器OnClose()事件流程图 如图3.5图3.5 服务器OnClose()事件流程图
14、(三)客户端1.客户端“进入”按钮事件流程图 如图3.6图3.6 客户端“进入”按钮事件程序流程图2.客户端“发送”按钮事件流程图 如图3.7图3.7 客户端“发送”按钮流程流程图 3.客户端本地OnReceive()事件流程图 如图3.8图3.8 客户端本地OnReceive()事件流程图4.客户端GetMsgFromRoom()和UpdateUser()函数流程图 如图3.9图3.9 客户端GetMsgFromRoom()和UpdateUser()函数程序流程图5.客户端“离开”函数流程图 如图3.10.图3.10 客户端“离开”函数流程图4 详细代码实现4.1 服务器1.单击“启动”按钮
15、,添加函数:void CSelfRoomDlg:OnButton1() / TODO:Add your control notification handler code here UpdateData(); /刷新界面,获得顾客输入 m_pSocket=new CServerSocket; BYTE nFild4; CString sIP; ServerIP.GetAddress(nFild0,nFild1,nFild2,nFild3); /获取管理员配备IP sIP.Format(%d.%d.%d.%d,nFild0,nFild1,nFild2,nFild3); CTime time=CT
16、ime:GetCurrentTime(); /获取当前时间 /下面开始输入完整性验证 if(m_strName.IsEmpty() AfxMessageBox(请先登记管理员名!); return; if(sIP.IsEmpty() AfxMessageBox(请配备聊天室IP!); return; if(sPort.IsEmpty() AfxMessageBox(请配备要开放窗口!); return; /界面 m_Admin.EnableWindow(false); ServerIP.EnableWindow(false); ServerPort.EnableWindow(false); m
17、_Start.EnableWindow(false); m_Stop.EnableWindow(true); m_Exit.EnableWindow(false); /启动聊天室,一方面创立用于监听套接字 if(m_pSocket-Create(atoi(sPort),1,sIP) m_MessageList.SetWindowTextA(); m_MessageList.ReplaceSel(聊天室启动成功!rn); CString t=time.Format(%Y-%m-%d); m_MessageList.ReplaceSel(日期:+t+rn); t=time.Format(%H:%M
18、:%S); /获得聊天室启动时刻信息 theApp.m_strName=m_strName; /记录管理员名 m_MessageList.ReplaceSel(t+管理员+theApp.m_strName+开放聊天室rn); if(m_pSocket-Listen() /监听开始 m_MessageList.ReplaceSel(等待成员加入rn); /当前暂时还无人加入聊天,因而在线顾客列表中仅管理员一人 m_UserList.ResetContent(); m_UserList.AddString(theApp.m_strName+(管理员); this-SetWindowTextA(管理
19、员:+m_strName+-SelfRoom);2.客户端顾客发送消息到达服务器OnReceive()事件:void CClientSocket:OnReceive(int nErrorCode) / TODO:Add your specialized code here and/or call the base classchar buff1sizeof(Header); memset(buff1,0,sizeof(buff1); Receive(buff1,sizeof(buff1);/一方面接受信息头部 this-AsyncSelect(FD_CLOSE|FD_READ|FD_WRITE
20、); Header*header=(Header*)buff1; int length=header-len; char type=header-type;/解析头部内容 if(type=LOGIN_IO) /头部类型为LOGIN_IO,表达是新成员加入 char buff1000; memset(buff,0,sizeof(buff); Receive(buff,length);/继续接受这条信息数据某些(新成员名) this-AsyncSelect(FD_CLOSE|FD_READ|FD_WRITE); m_dlgServer-UpdateData(); CTime time=CTime:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程 技术 课程设计 报告 样本
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。