版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要本课程设计主要是设计并实现一个简单的多人聊天程序,该聊天程序能够支持多人聊天,聊天的内容可以仅仅支持文本信息,聊天程序包括服务器程序和客户端程序。在课程设计中系统的开发平台为Eclipse程序运行平台为Windows XP。关键词:聊天程序;服务器;客户端;Eclipse目 录1 课题描述12 设计过程22.1服务器模块32.2客户端模块32.3信息处理模块42.4源代码43 测试11总结13参考文献141 课题描述随着社会发展,Internent的迅速普及,人们对实时通信的要求越来越迫切,需求日益增加,网络聊天已经成为了一大时尚,不少人都有这样的经历。客户客户端/服务器模式是一种能够在
2、基于网络环境的分布处理过程中,使用基于连接的网络通信模型。该通信模型首先在客户机和服务器之间定义一套通信协议,并创建一个Socket类,利用这个类来建立一条可靠的链接;然后,客户端/服务器再在这条连接上可靠地传输数据。客户端发出请求,服务器发出请求,服务器监听来自客户机的请求,并为客户端提供相应服务。客户/服务模式可靠性高、采用模块化设计所以它的优势很明显。是现代通信不可或缺的一部分。本课题主要是通过对简单聊天程序的设计及QQ原理的分析,了解聊天程序的功能需求及工作原理;熟悉TCP/IP协议以及套节字编程原理;熟悉Eclipse编程环境及Socket/ServerSocket编程方法。开发工具
3、: Eclipse2 设计过程 聊天室的总体设计过程比较简单主要是构建设计框图。就是当客户端发出信息时,我们将数据写到socket,当对方有数据到达时,我们从socket读出来并显示给客户。程序关键在于如何监听到有信息到达的过程。应用程序流程图如下图所示,开始是先创建主窗口,然后初始化窗口,程序下面才开始消息循环处理。如果没有消息循环的活,直接结束掉这个程序。如果有循环的话,要判断这个窗口消息的内容是哪种类型,然后再进行选择处理方式。流程图如图2-1所示图2-1 服务器模块图2.1服务器模块聊天室主要包括三个模块,服务器模块、客户端模块、信息处理模块。该聊天室可以支持多人聊天,只支持文本信息。
4、服务器模块所包含的函数模块如下图所示图2-2 服务器模块图2.2 客户端模块客户端所包含的函数模块如下图所示图2-3 客户端模块图2.3 信息处理模块信息处理模块包括注册信息及登录信息的处理模块,其所包含的函数模块如下图所示图2-4 信息处理模块图2.4 源代码1.服务器程序清单/ ChatService.javapackage lee;import java.util.*;import java.io.*;public class ChatService private static ChatService cs; private Properties userList; private L
5、inkedList chatMsg; private ChatService() public static ChatService instance() if (cs = null) cs = new ChatService(); return cs; public boolean validLogin(String user , String pass) throws IOException if (loadUser().getProperty(user) = null) return false; if (loadUser().getProperty(user).equals(pass)
6、 return true; return false; public boolean addUser(String name , String pass) throws Exception if (userList = null) userList = loadUser(); if (userList.containsKey(name) throw new Exception(用户名已经存在,请重新选择用户名); userList.setProperty(name , pass); saveUserList(); return true; public String getMsg() if (
7、chatMsg = null) chatMsg = new LinkedList(); return ; String result = ; for (String tmp : chatMsg) result += tmp + n; return result; public void addMsg(String user , String msg) if (chatMsg = null) chatMsg = new LinkedList(); if (chatMsg.size() 40) chatMsg.removeFirst(); chatMsg .add(user + 说: + msg)
8、; / 下面是系统的工具方法 private Properties loadUser()throws IOException if (userList = null) File f = new File(userFperties); if (!f.exists() f.createNewFile() ; userList = new Properties(); userList.load(new FileInputStream(f); return userList; private boolean saveUserList()throws IOException if (use
9、rList = null) return false; userList.store(new FileOutputStream(userFperties), userList); return true; 2.客户端程序清单/ChatServlet.javapackage lee;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.h
10、ttp.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletException;import javax.servlet.ServletContext;import javax.servlet.RequestDispatcher;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServl
11、etResponse;import java.io.PrintWriter;import java.io.IOException;public class ChatServlet extends HttpServlet /* Constructor of the object.*/public ChatServlet() super();/*Destruction of the servlet. */public void destroy() super.destroy(); / Just puts destroy string in log/ Put your code here/* * T
12、he doGet method of the servlet. * This method is called when a form has its tag value method equals to get. * param request the request send by the client to the server * param response the response send by the server to the client * throws ServletException if an error occurred * throws IOException
13、if an error occurred */public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /* * The doPost method of the servlet. * This method is called when a form has its tag value method equals to post. * param request the request send by the client to
14、 the server * param response the response send by the server to the client * throws ServletException if an error occurred * throws IOException if an error occurred */public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /* * Initialization o
15、f the servlet. * throws ServletException if an error occurs */public void init() throws ServletException / Put your code herepublic void service(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException request.setCharacterEncoding(UTF-8); String msg = request.getP
16、arameter(chatMsg); if ( msg != null & !msg.equals() String user = (String)request.getSession(true).getAttribute(user); ChatService.instance().addMsg(user , msg); /设置中文流 response.setContentType(text/html;charset=GBK); PrintWriter out = response.getWriter(); out.println(ChatService.instance().getMsg()
17、;3 测试聊天室的程序模块如下图所示图3-1 聊天室程序模块图程序运行后,用户注册界面如下图所示图3-2 用户注册界面用户登录界面如下图所示图3-3 用户登录界面进入聊天室的聊天界面如下图所示图3-4 聊天室界面可以进行多人聊天,多人聊天如下图所示图3-5 多人聊天总 结网络的课程设计,之前没有接触过网络编程的语言,所以感觉难度比较大,也因为如此,在找资料及向老师同学的请教中学到了很多的东西。这次的课程设计是简单聊天程序,在平日的生活学习中,可以说QQ等即时通讯软件已占据重要的位置,也深受大家的喜爱,所以这个课程设计很有现实意义,做起来也比较感兴趣。在具体做的过程中,参考了网络班同学还有学长的
18、一些程序,虽然这个聊天室的界面及功能比较简单,但从代码的编写及结果的调试成功还是花了很多的心思。尤其是刚开始用Eclipse软件的时候,从完全陌生到慢慢的了解,这其中的过程对应用方面知识的提高有很大的帮助。课程设计项目的虽然要求是独立完成,但还是很多问题的解决离不开老师的指导及同学之间的探讨,这些在做项目的时候都是必不可少的。学校提供了设计的机房还有老师的悉心指导,这些跟课程设计的顺利完成都是密不可分的,在这里感谢大家带来的帮助。另外就是知识方面的问题,计算机网络和Java Socket有很多方面的知识还是很不熟悉,具体用到的时候就感觉生疏,或者还是缺乏设计方面的实践。课程设计的机会不是很多,由于所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全球及中国瓦楞纸板输送带行业头部企业市场占有率及排名调研报告
- 2025-2030全球RF IC 设计服务行业调研及趋势分析报告
- 2025年全球及中国拖拽式滴盐撒播机行业头部企业市场占有率及排名调研报告
- 2025年全球及中国运水式模温机行业头部企业市场占有率及排名调研报告
- 中国居民膳食指南准则一食物多样合理搭配讲解
- 作用于中枢神经系统的药物讲解
- 2025软件产品代理版合同书
- 安防设备采购政府采购合同
- 2025房屋抵押贷款的合同范本
- 2025承运合同书范本范文
- 健康指南如何正确护理蚕豆病学会这些技巧保持身体健康
- 老客户的开发与技巧课件
- 2024建设工程人工材料设备机械数据分类和编码规范
- 26个英文字母书写(手写体)Word版
- GB/T 13813-2023煤矿用金属材料摩擦火花安全性试验方法和判定规则
- 动物检疫技术-动物检疫的方法方式(动物防疫与检疫技术)
- DB31 SW-Z 017-2021 上海市排水检测井图集
- 日语专八分类词汇
- GB/T 707-1988热轧槽钢尺寸、外形、重量及允许偏差
- GB/T 33084-2016大型合金结构钢锻件技术条件
- 高考英语课外积累:Hello,China《你好中国》1-20词块摘录课件
评论
0/150
提交评论