多人聊天系统的设计与实现课程设计说明书_第1页
多人聊天系统的设计与实现课程设计说明书_第2页
多人聊天系统的设计与实现课程设计说明书_第3页
多人聊天系统的设计与实现课程设计说明书_第4页
多人聊天系统的设计与实现课程设计说明书_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要本课程设计主要是设计并实现一个简单的多人聊天程序,该聊天程序能够支持多人聊天,聊天的内容可以仅仅支持文本信息,聊天程序包括效劳器程序和客户端程序。在课程设计中系统的开发平台为Eclipse程序运行平台为WindowsXP。关键词:聊天程序;效劳器;客户端;Eclipse目录1课题描述12设计过程2效劳器模块32.2客户端模块32.3信息处理模块42.4源代码43测试11总结13参考文献141课题描述随着社会开展,Internent的迅速普及,人们对实时通信的要求越来越迫切,需求日益增加,网络聊天已经成为了一大时尚,不少人都有这样的经历。客户客户端/效劳器模式是一种能够在基于网络环境的分布处理过程中,使用基于连接的网络通信模型。该通信模型首先在客户机和效劳器之间定义一套通信协议,并创立一个Socket类,利用这个类来建立一条可靠的链接;然后,客户端/效劳器再在这条连接上可靠地传输数据。客户端发出请求,效劳器发出请求,效劳器监听来自客户机的请求,并为客户端提供相应效劳。客户/效劳模式可靠性高、采用模块化设计所以它的优势很明显。是现代通信不可或缺的一局部。本课题主要是通过对简单聊天程序的设计及QQ原理的分析,了解聊天程序的功能需求及工作原理;熟悉TCP/IP协议以及套节字编程原理;熟悉Eclipse编程环境及Socket/ServerSocket编程方法。开发工具:Eclipse2设计过程聊天室的总体设计过程比拟简单主要是构建设计框图。就是当客户端发出信息时,我们将数据写到socket,当对方有数据到达时,我们从socket读出来并显示给客户。程序关键在于如何监听到有信息到达的过程。应用程序流程图如下列图所示,开始是先创立主窗口,然后初始化窗口,程序下面才开始消息循环处理。如果没有消息循环的活,直接结束掉这个程序。如果有循环的话,要判断这个窗口消息的内容是哪种类型,然后再进行选择处理方式。流程图如图2-1所示图2-1效劳器模块图效劳器模块聊天室主要包括三个模块,效劳器模块、客户端模块、信息处理模块。该聊天室可以支持多人聊天,只支持文本信息。效劳器模块所包含的函数模块如下列图所示图2-2效劳器模块图客户端模块客户端所包含的函数模块如下列图所示图2-3客户端模块图信息处理模块信息处理模块包括注册信息及登录信息的处理模块,其所包含的函数模块如下列图所示图2-4信息处理模块图源代码//ChatSerpackagelee;importjava.util.*;importjava.io.*;publicclassChatService{privatestaticChatServicecs;privatePropertiesuserList;privateLinkedList<String>chatMsg;privateChatService(){}publicstaticChatServiceinstance(){if(cs==null){cs=newChatService();}returncs;}publicbooleanvalidLogin(Stringuser,Stringpass)throwsIOException{if(loadUser().getProperty(user)==null){returnfalse;}if(loadUser().getProperty(user).equals(pass)){returntrue;}returnfalse;}publicbooleanaddUser(Stringname,Stringpass)throwsException{if(userList==null){userList=loadUser();}if(userList.containsKey(name)){thrownewException("用户名已经存在,请重新选择用户名");}userList.setProperty(name,pass);saveUserList();returntrue;}publicStringgetMsg(){if(chatMsg==null){chatMsg=newLinkedList<String>();return"";}Stringresult="";for(Stringtmp:chatMsg){result+=tmp+"\n";}returnresult;}publicvoidaddMsg(Stringuser,Stringmsg){if(chatMsg==null){chatMsg=newLinkedList<String>();}if(chatMsg.size()>40){chatMsg.removeFirst();}chatMsg.add(user+"说:"+msg);}//下面是系统的工具方法privatePropertiesloadUser()throwsIOException{if(userList==null){Filef=newFile("userFperties");if(!f.exists())f.createNewFile();userList=newProperties();userList.load(newFileInputStream(f));}returnuserList;}privatebooleansaveUserList()throwsIOException{if(userList==null){returnfalse;}userList.store(newFileOutputStream("userFperties"),"userList");returntrue;}}//packagelee;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet..Servlet;importjavax.servlet..ServletRequest;vletResponse;importjavax.servlet.ServletException;importjavax.servlet.ServletContext;importjavax.servlet.RequestDispatcher;importjavax.servlet..Servlet;importjavax.servlet..ServletRequest;importjavax.servlet..ServletResponse;importjava.io.PrintWriter;importjava.io.IOException;publicclassChatServletextendsServlet{ /*Constructoroftheobject.*/ publicChatServlet(){ super(); } /*Destructionoftheservlet.<br>*/ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } /**ThedoGetmethodoftheservlet.<br> *Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget. *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoGet(ServletRequestrequest,ServletResponseresponse) throwsServletException,IOException{ } /* *ThedoPostmethodoftheservlet.<br> *Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost. *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoPost(ServletRequestrequest,ServletResponseresponse) throwsServletException,IOException{ } /* *Initializationoftheservlet.<br> *@throwsServletExceptionifanerroroccurs */ publicvoidinit()throwsServletException{ //Putyourcodehere } publicvoidservice(ServletRequestrequest,ServletResponseresponse)throwsIOException,ServletException{request.setCharacterEncoding("UTF-8");Stringmsg=request.getParameter("chatMsg");if(msg!=null&&!msg.equals("")){Stringuser=(String)request.getSession(true).getAttribute("user");ChatService.instance().addMsg(user,msg);}//设置中文流response.setContentType("text/html;charset=GBK");PrintWriterout=response.getWriter();out.println(ChatService.instance().getMsg());}}3测试聊天室的程序模块如下列图所示图3-1聊天室程序模块图程序运行后,用户注册界面如下列图所示图3-2用户注册界面用户登录界面如下列图所示图3-3用户登录界面进入聊天室的聊天界面如下列图所示图3-4聊天室界面可以进行多人聊天,多人聊天如下列图所示图3-5多人聊天总结网络的课程设计,之前没有接触过网络编程的语言,所以感觉难度比拟大,也因为如此,在找资料及向老师同学的请教中学到了很多的东西。这次的课程设计是简单聊天程序,在平日的生活学习中,可以说QQ等即时通讯软件已占据重要的位置,也深受大家的喜爱,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论