基于java的聊天系统(客户端服务器)
- 格式:doc
- 大小:381.00 KB
- 文档页数:22
摘要随着即时通信技术的发展,在线聊天室为众多的网民朋友提供了一个交友与娱乐的平台。
在这个平台上,人们可以通过文字与符号进行实时的交谈、聊天,是网民之间相互沟通、交流情感的最佳方式之一。
该课题旨在设计一个以服务器为中介,实现多个终端用户同时在线聊天的聊天室。
系统基于C/S模式,利用Socket套接字实现两台主机之间的彼此通信,并使用多线程技术实现了一个聊天服务器对应多个终端用户,让用户可以在局域网范围内在线聊天。
该课题还对统一建模语言UML在系统的分析与设计中的应用进行了详细的阐述,对于使用面向对象的思想开发同类系统具有很大的指导意义。
同时系统开发过程中融合了诸如JSP、JavaScript、Java Servlet、Hibernate等多种网络开发技术,对于技术的使用有一定的借鉴价值。
关键词:客户端/服务器模式;在线聊天室;UML建模;Java网络编程The Design and Implementation of ElectronicChatroom Based on JSPAbstractWith the development of instant communication technology, online chatrooms provide a platform for dating and entertainment for many net friends. In this platform, people can instantly conversate and chat through words and symbols, which is one of the best ways of affective communication.This paper designs a chatroom, which is a server for intermediary, implementing multiple users chatting online.The system, which is based on C/S model, realizes communication between two computers by using socket, and achieves a chat server corresponding multiple terminal users through using multithreading technology, so that users can chat in LAN.The paper describes the application of UML in systemic design and analysis in detail, which is of great significance for developing the similar system by using object-oriented ideas. And various of technologies of network development are integrated in the system development process, such as JSP, JavaScript, Java Servlet, Hibernate etc, which are of certain reference value for the use of technology.Key words: Client/Server Model;Online Chatroom;UML Modeling;Java Network Programming目录第一章绪论 (1)1.1系统研究的背景、范围和目的 (1)1.1.1系统研究的背景和范围 (1)1.1.2系统研究的目的 (1)1.2 系统的理论依据、实验基础和研究方法 (1)1.2.1 JSP技术简介 (1)1.2.2 UML简介 (2)1.2.3 Java网络编程简介 (2)1.2.4 系统的实验基础和研究方法 (3)1.3 系统结果及其地位、作用和意义 (4)1.3.1 系统结果 (4)1.3.2 系统研究的地位、作用和意义 (4)第二章电子聊天室系统的需求描述 (5)2.1聊天室客户端的用例描述 (5)2.2 聊天室服务器端的用例描述 (7)第三章电子聊天室系统的分析与设计 (11)3.1 聊天室客户端的分析与设计 (11)3.1.1 获取客户端对象 (11)3.1.2 客户端对象的动态关系 (11)3.1.3 客户端界面与类的设计 (15)3.2 聊天室服务器端的分析与设计 (16)3.2.1 获取服务器端的对象 (16)3.2.2 服务器端对象的动态关系 (17)3.2.3 服务器端界面与类的设计 (19)3.3 客户端与服务器端通信类的设计 (20)3.4 数据库的分析与设计 (21)第四章电子聊天室系统的编程和实现 (23)4.1 聊天系统目录结构简介 (23)4.2 客户端主要代码 (24)4.3 服务器端主要代码 (26)4.4 调试运行 (27)结论 (32)参考文献 (33)谢辞 ··········································································错误!未定义书签。
基于TCP/IP的局域网聊天室的设计与实现摘要随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。
局域网的发展也同样迅速。
很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了。
所以本文提出了一个更加合理的设计,并在WINDOWS平台上加以了实现.在本实现内将客户端和服务端综合在一个程序之内,用多线程实现不同的并行任务。
并进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理,又易于扩展以及个性化定制。
本文通过局域网聊天系统来具体共享内存实现进程间的数据交换,利用windows消息机制实现进程间的同步,两种机制结合使用。
局域网聊天室作为一种新型的聊天工具可以提供更为及时、可靠、突破了必须有外界网络接入等优点,具有极其广泛的发展前景。
本文介绍了采用JAVA编程开发局域网聊天系统的一套比较常用的解决方案。
采用TCP模式进行文字聊天, 在客户端之间点对点(C/C)的进行。
本系统采用典型的C/S(客户端/服务器)的框架模式,在该方案中采用Socket (套接字)原理实现网络通信,最终实现了通过服务器中转的文字聊天、文件传输功能,从而大大降低了程序的开发难度。
本系统主要包括登陆、聊天、好友列表和服务器管理几个部分。
本系统从需求分析、系统的设计、功能的实现都严格遵循了软件工程设计的思想。
【关键词】Socket;TCP/IP;C/S;局域网聊天室AbstractWith the development of computer network technology, a variety of Web-based applications also will be the birth, such as Internet-based information release, communications, data sharing, and so on. LAN development is quickly. Many government agencies, businesses, schools, are first linked together in a unified LAN, respectively connected to the INTERNET, LAN-based instant messaging tool, and thus came into being. In this paper, a more rational design, in WINDOWS platform to achieve integrated in this realization of the client and server in different parallel tasks within a program, multi-threaded. And the design of user-friendly interface, easy to use and very reasonable, and easy expansion and customization. LAN chat system to a specific shared memory data exchange between process and use the windows message mechanism to achieve inter-process synchronization, the two mechanisms used in conjunctionLAN chat room as a new chat tool that can provide the advantages of more timely, reliable, broke the need of outside network access, has a very wide range of development prospects.This article describes a JA V A Programming LAN chat system, a more common solution. TCP mode, text chat, peer-to-peer (C / C) between the client. The system uses the framework of a typical C / S (Client / Server) mode, the program using the Socket (socket) the principle of network communication, and ultimately the transit through the server, text chat, file transfer capabilities, which greatly reduces the difficulty of program development.The system includes landing, chat, friend lists, and server management of several parts. The system needs analysis, system design, the realization of functions strictly follow the idea of software engineering.【Key words】Socket;TCP/IP;C/S;Local Area Network Chat Room目录第1章引言 (1)1.1课题背景 (1)1.2国内外研究现状 (2)1.3主要内容 (3)第2章局域网聊天室系统分析 (4)2.1系统需求分析 (4)2.1.1功能需求 (4)2.1.2系统基本流程图 (4)2.1.3性能要求 (5)2.1.4测试环境规定 (5)2.2可行性研究 (5)2.2.1成本可行性分析 (5)2.2.2技术可行性分析 (5)2.3系统开发环境的分析 (6)2.4数据流图 (6)2.4.1顶层数据流图 (6)2.4.2一层数据流图 (6)第3章系统设计 (7)3.1设计目标 (7)3.2构建开发环境 (7)3.3系统模块流程图 (7)3.4系统功能模块图 (9)第4章基于Eclipse的聊天室的分析与设计 (10)4.1 TCP套接字的运用 (10)4.2 TCP三次握手协议 (11)4.3程序结构 (11)4.3.1多用户在线方案 (11)4.3.2软件框架 (12)4.4代码实现 (12)4.4.1用户登陆模块 (12)4.4.2用户列表模块 (13)4.4.3文本聊天模块 (15)4.4.4文件传输模块 (17)第5章局域网聊天室系统测试 (20)5.1系统测试结果与分析 (20)5.1.1用户登陆以及用户列表 (20)5.1.2文本聊天 (21)5.1.3文件传输功能 (24)5.2本章小结 (25)结束语 (26)参考文献......................................................... .27致谢. (29)第1章引言1.1课题背景近年来,随着全球信息化进程的不断发展,网络的发展也非常迅速。
基于java的视频会议系统设计与实现重庆大学工程硕士论文学生姓名:***指导教师:***兼职导师:***工程领域:软件工程重庆大学软件学院年月Design and Implementation of Java-Based Video Conference SystemA Thesis Submitted to Chongqing Universityin Partial Fulfillment of the Requirement for theDegree of Master of EngineeringBy***Supervised by Prof. ***Supervised by Associate-Prof. ***Specialty: Software EngineeringCollege of Software Engineering of ChongqingUniversity, Chongqing, China摘要随着互联网的发展与进步,网络与计算机应用已经普及到社会的各个层面。
对于一个逐渐壮大的集团化企业来说,高效的管理模式和工作方式,直接影响着其在市场竞争中的地位。
某集团(全称:某集团有限公司)下辖18个分/子公司、污水处理厂及项目部,集团总部或在分支机构召开的各种办公会议,不仅花费了大量的时间和经费,也给公司管理带来很大的不便。
因此,必须有一种新的会议方式,解决某集团公司面临的,会议多、效率低的现实问题。
笔者作为某集团信息部员工,在深入调研后,提出开发视频会议系统的方案,并参与了系统需求分析、设计、实现、项目管理等全过程。
该方案详细论述了利用Java相关技术,开发基于SIP协议视频会议系统的详细过程。
本文的研究工作包括两大部分:(1)利用SIP协议完成信令的多点呼叫控制,从而实现对会议的管理。
(2)利用RTP协议和Java相关技术实现多媒体的通信。
通过本系统的研发取得了以下几个方面的成果:(1)视频会议服务器端,其实现的主要功能包括:主持会议、操控会议、结束会议;客户端,其主要功能是参加会议、参与文件管理等操作。
第一章绪论1.1即时通讯的概念1.2即时通讯的国内外发展状况1.3课题内容简介第二章即时通讯系统设计与分析2.1需求分析2.1.1功能需求2.1.1.1 用户注册2.1.1.2 用户登录2.1.1.3 刷新好友列表2.1.1.4 好友管理2.1.1.5 用户查询2.1.1.6 聊天2.2 概要设计2.2.1 系统框架设计2.2.2 系统拓扑结构2.3 功能设计2.3.1 用户注册模块2.3.2 用户登录模块2.3.3 好友管理模块2.3.4 查找用户模块2.3.5 即时通讯模块2.3.6 刷新好友列表模块2.4 数据库设计第三章系统客户端、服务器开发平台搭建3.1 系统客户端开发平台搭建3.1.1 开发Android程序软件需求3.1.2 开发Android程序硬件最低需求3.1.3 JDK的安装3.1.4 Android开发环境的安装3.1.5 安装Eclipse插件ADT3.2 系统服务器开发平台搭建第四章系统客户端设计与实现4.1 Android系统简介4.2客户端使用到的接口介绍4.3 客户端实现4.3.1 用户注册模块实现4.3.2 用户登录模块实现4.3.3 刷新好友列表模块实现4.3.4 好友管理模块实现4.3.5 用户查询模块实现4.3.6 聊天模块实现第五章系统服务器设计与实现5.1 Google App Engine简介5.2 服务器端实现5.2.1 服务器用户注册5.2.2 服务器用户登录5.2.3 服务器在线服务第六章结论与展望第一章绪论1.1即时通讯的概念即时通讯(Instant Messenger,简称IM),是指能够即时发送和接收互联网消息等的业务。
自1998年面世以来,特别是近几年的迅速发展,即时通讯的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。
即时通讯不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。
学java se也有一段时间了,初接触java时,其一些语法while,for,if,swich等语句跟C语言大同小异,只是这些语句是在类里面执行而已。
这个聊天程序,基本囊括java SE的内容:继承,重写,多态,接口,多线程,IO输入输出流,GUI。
所以,学完java SE后做一个类似qq的聊天程序是对java se最好的复习,也为以后做大项目打好基础。
以下是对聊天程序的简介:这个聊天程序功能比较多点,不是纯粹的两个聊天窗口而已,包括启动服务器,登录客户端,客户端之间的通讯。
所以,建了三个包,一个是Server包,一个是Client包,另一个是用来处理数据信息传递和交换的Util包。
本聊天程序处理数据信息,运用到的XML技术和IO输入输出流,因为学java se里并没有的XML的知识点,所以为了理解和能做出这个聊天程序,我后来花了几天学了XML技术,XML很重要,以后学到java ee时做项目很多时候药运用到XML的知识。
聊天的界面主要是运用GUI那章的知识:swt和swing。
首先,Server包定义三个类,分别是:Server,ServerConnection,ServerMessageThreadServer类主要是作为服务器,要运行聊天程序时,得先启动服务器,然后才能运行Client 客户端,如果学了java 网络那章的话,应该就理解为什么这样做了。
而ServerConnection是用来进行服务器的链接,ServerMessageThread是用来启动服务器线程,并接收客户端传来的登录信息。
其代码如下:Server类:package Server;import java.awt.BorderLayout;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.Collection;import java.util.HashMap;import java.util.Map;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import Util.XMLUtil;public class Server extends JFrame{private JLabel jLabel1;private JLabel jLabel2;private JLabel jLabel3;private JButton jButton;private JPanel jPanel1;private JPanel jPanel2;private JScrollPane jScrollPane;private JTextArea jTextArea;private JTextField jTextField;private Map<String, ServerMessageThread> map = new HashMap<String, ServerMessageThread>();public Server(String name){super(name);this.initComponents(); //initialize UI}public Map<String, ServerMessageThread> getMap(){return map;}public JLabel getJLabel2(){return jLabel2;}public JButton getJButton(){return jButton;}public JTextArea getJTextArea(){return jTextArea;}public JTextField getJTextField(){return jTextField;}public void setJTextField(JTextField textField){jTextField = textField;}private void initComponents(){jPanel1 = new JPanel();jPanel2 = new JPanel();jLabel1 = new JLabel();jLabel2 = new JLabel();jLabel3 = new JLabel();jTextField = new JTextField(10);jButton = new JButton();jScrollPane = new JScrollPane();jTextArea = new JTextArea();jPanel1.setBorder(BorderFactory.createTitledBorder("服务器信息"));jPanel2.setBorder(BorderFactory.createTitledBorder("在线用户列表"));jTextField.setText("5000");jLabel1.setText("服务器状态");jLabel2.setText("停止");jLabel2.setForeground(new Color(204, 0, 51));jLabel3.setText("端口号");jButton.setText("启动服务器");jButton.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent event){Server.this.execute(event);}});this.addWindowListener(new WindowAdapter(){@Overridepublic void windowClosing(WindowEvent e){try{Collection<ServerMessageThread> cols = Server.this.map.values();String messageXML =XMLUtil.constructCloseServerWindowXML();for(ServerMessageThread smt : cols){smt.sendMessage(messageXML);}}catch(Exception ex){ex.printStackTrace();}finally{System.exit(0);}}});jPanel1.add(jLabel1);jPanel1.add(jLabel2);jPanel1.add(jLabel3);jPanel1.add(jTextField);jPanel1.add(jButton);jTextArea.setEditable(false); //不允许用户手动修改在线用户列表jTextArea.setRows(20);jTextArea.setColumns(30);jTextArea.setForeground(new Color(0, 51, 204));jScrollPane.setViewportView(jTextArea); //将JTextArea放置到JScrollPane中jPanel2.add(jScrollPane);this.getContentPane().add(jPanel1, BorderLayout.NORTH);this.getContentPane().add(jPanel2, BorderLayout.SOUTH);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setAlwaysOnTop(true);this.setResizable(false);this.pack();this.setVisible(true);}private void execute(ActionEvent evt){int port = Integer.parseInt(this.getJTextField().getText());new ServerConnection(this, port).start();}public static void main(String[] args){new Server("服务器");}}ServerConnection类:package Server;import java.io.InputStream;import java.io.OutputStream;import .ServerSocket;import .Socket;import javax.swing.JOptionPane;import Util.XMLUtil;public class ServerConnection extends Thread{private ServerSocket serverSocket;private Server server;public ServerConnection(Server server, int port){try{this.server = server;this.serverSocket = new ServerSocket(port);// 下面两行代码不能放到上面一行代码之前// 因为服务器启动时有可能会抛出异常// 如果放在上面,则发生异常时也会导致label上的文本发生变化// 这与实际情况不符this.server.getJLabel2().setText("运行");this.server.getJButton().setEnabled(false);}catch(Exception ex){ex.printStackTrace();JOptionPane.showMessageDialog(this.server, "端口号被占用!", "警告", JOptionPane.ERROR_MESSAGE);}}@Overridepublic void run(){while(true){try{Socket socket = this.serverSocket.accept();InputStream is = socket.getInputStream();OutputStream os = socket.getOutputStream();byte[] buf = new byte[5000];int length = is.read(buf);//客户端发来的连接信息(包括了用户名)String loginXML = new String(buf, 0, length);// 从客户端登录数据中提取出用户名信息(username)String username =XMLUtil.extractUsername(loginXML);String loginResult = null;// 判断用户是否登录成功boolean isLogin = false;// 判断用户名是否重复// 用户名重复if(this.server.getMap().containsKey(username)){loginResult = "failure";}// 用户名不重复else{loginResult = "success";isLogin = true;}String xml =XMLUtil.constructLoginResultXML(loginResult);os.write(xml.getBytes());// 如果用户登录成功,启动线程if(isLogin){// 准备创建新的线程,用于处理用户的聊天数据,每一个连接上的用户都会对应一个该线程ServerMessageThread serverMessageThread = new ServerMessageThread(this.server, socket);//将用户名及与之对应的线程对象放到Map中this.server.getMap().put(username, serverMessageThread);//更新用户列表(服务器端+客户端)serverMessageThread.updateUserList();serverMessageThread.start();}}catch(Exception ex){ex.printStackTrace();}}}}ServerMessagetThread类:package Server;import java.io.InputStream;import java.io.OutputStream;import .Socket;import java.util.Collection;import java.util.Map;import java.util.Set;import Util.CharacterUtil;import Util.XMLUtil;public class ServerMessageThread extends Thread{private Server server;private InputStream is;private OutputStream os;public ServerMessageThread(Server server, Socket socket) {try{this.server = server;this.is = socket.getInputStream();this.os = socket.getOutputStream();}catch(Exception ex){}}// 更新用户列表// 首先更新服务器端的用户列表// 然后更新客户端的用户列表public void updateUserList(){//获得用户名的集合Set<String> users = this.server.getMap().keySet();//构造向客户端发送的在线用户列表数据xmlString xml = XMLUtil.constructUserList(users);String str = "";for(String user : users){str += user + "\n";}//首先更新服务器端的用户列表this.server.getJTextArea().setText(str);Collection<ServerMessageThread> cols =this.server.getMap().values();//遍历与每一个客户端对应的线程,向每一个客户端发送在线用户列表for(ServerMessageThread smt : cols){smt.sendMessage(xml);}}//向客户端发送数据public void sendMessage(String message){try{os.write(message.getBytes());}catch(Exception ex){ex.printStackTrace();}}@Overridepublic void run(){while(true){try{byte[] buf = new byte[5000];int length = this.is.read(buf);//客户端发来的消息String xml = new String(buf,0,length);int type =Integer.parseInt(XMLUtil.extractType(xml));// 聊天数据if(CharacterUtil.CLIENT_MESSAGE == type){//用户名(谁发来的消息)String username =XMLUtil.extractUsername(xml);//聊天的文本内容String content = XMLUtil.extractContent(xml);//构造向所有客户端发送的消息String message = username + " : " + content;//向所有客户端发送的XML聊天数据String messageXML =XMLUtil.constructServerMessageXML(message);Map<String, ServerMessageThread> map =this.server.getMap();Collection<ServerMessageThread> cols =map.values();for(ServerMessageThread smt : cols){//向XML聊天数据发送给每一个客户端smt.sendMessage(messageXML);}}// 关闭客户端窗口else if(CharacterUtil.CLOSE_CLIENT_WINDOW == type){String username =XMLUtil.extractUsername(xml);//获得待删除用户所对应的线程对象ServerMessageThread smt =this.server.getMap().get(username);//构造出向客户端确认关闭的XML信息String confirmationXML =XMLUtil.constructCloseClientWindowConfirmationXML();//向客户端发送任意一条确认信息smt.sendMessage(confirmationXML);// 从用户列表的Map中将该用户去除this.server.getMap().remove(username);// 更新在线用户列表this.updateUserList();this.is.close();this.os.close();break; // 结束该线程}}catch(Exception ex){}}}}第二:Client包Client包定义三个类,分别是:Client,ChatClient,ClientConnection。
个人介绍姓名:性别:户口所在地:年龄:毕业院校:专业:学历:联系电话:邮箱:求职意向Java软件研发英语水平四级专业技能◆熟练的运用java开发环境和项目构建◆熟练掌握java程序设计语言,有牢固的J2SE基础,能够熟练使用JDBC、Servlet、JSP技术。
熟悉C/S,B/S软件架构模式◆熟练应用JSP/Servlet/JavaBean的MVC模式开发项目◆会基本的EJB技术.熟练使用MyEclipse开发环境◆熟悉数据库 SQL Server、Oracle,熟练掌握标准SQL语言◆掌握关系数据库的原理。
熟练使用Oracle、SQL Server进行软件系统开发。
熟练使用Tomcat服务器.◆具备一般的英语读写能力◆初步了解Struts、Hibernate、Spring应用项目经验一、基于。
NET的聊天系统描述:采用的是传统的C/S模式,基于。
NET的COM+组件和微软的自带的消息队列(MSMQ),可以很方便的存贮和获取队列中的消息,并且采用管道通信,可以不关心其中的通信原理;该系统的功能比较简单,能够实现局域网通信开发技术:+ COM+组件开发工具:MS Visual Studio数据库:SQL Server角色:组长(单人开发)负责模块:界面、数据库建立和管理、后台的编写等等时间:一周二、基于Java的聊天系统描述:本系统采用的任然是基于传统的C/S模式开发,前台用的是java.swing包做的界面,后台的编程采用了一些工厂模式,接口编程,给程序的扩展带来了很大的方便,数据库则是利用的文本文件保存相关的信息,采用传统的sql从文本文件中获取自己要的信息,数据库能实现查询、添加、删除等功能。
通信则是采用最底层的socket套接字编程;实现的主要功能有:闪屏,截图,托盘显示来信消息,多人会话等开发技术: socket套接字+面向接口编程+工厂模式开发工具: MyEclipse8.0数据库:自己写的文本数据库角色:组长(单人开发)负责模块:页面,数据库的编写,以及所有业务逻辑的编写时间:一周三、连连看小程序描述:依然是传统的C/S模式开发,该程序有很多细节的地方考虑比较周到,例如只在有图片的地方产生label、图片遍历填充算法、图片连接的算法等,这在一定程度上减少了该程序的内存开销,同样采用了工厂模式,可以在不改变源程序代码的同时,增加新的关卡开发技术:J2SE开发工具:NetBeans角色:组长(单人开发)时间:三天四、库存管理系统描述:本系统采用了b/s模式开发,其中用到了jsp、servlet、JavaBean、jstl标签库、el表达式等技术,本人负责入库单和出库单管理模块,其中包含的功能大致有根据进货单产生入库单,根据订货单产生出库单,以及直接导入入库单等,采用了mvc框架,和单例模式,工厂模式开发开发技术:J2EE、servlet、jsp、JavaBean、el表达式、jndi等等开发工具:Myeclipse角色:组员时间:一周自我评价◆吃苦耐劳,有强烈的敬业精神和团队协作精神,能够承受一定的压力,能迅速的适应各环境,并融合其中同时对编程具有浓厚的兴趣。
在线聊天系统的设计与实现本科毕业设计目录目录 (1)前言 (1)2. 需求分析 (2)2.1 系统运行环境需求 (2)2.2 模块功能分析 (2)2.3系统功能结构 (4)2.4数据字典 (4)3. 概要设计 (5)3.1系统总体结构设计 (5)3.1.1结构设计系统 (5)3.1.2系统功能模块结构 (6)3.2数据库设计 (8)3.2.1概念设计 (8)3.2.2逻辑设计 (8)3.2.3物理设计 (9)数据库类型使用mySql数据库,用户表的主键为id。
(9)4. 详细设计 (9)4.1流程图 (9)4.1.1用户注册登录 (9)4.1.2在线用户显示模块 (11)4.1.4聊天信息显示模块 (13)4.1.5系统消息显示模块 (14)4.1.6管理员管理用户模块 (14)4.1.7辅助功能 (15)4.2界面设计 (16)4.2.2登录首页 (16)4.2.3注册界面 (17)4.2.4聊天室界面 (17)4.3工程结构设计 (18)4.4各类功能设计 (20)4.4.1类图 (20)4.4.2实体类 (21)4.4.4监听器 (21)4.4.5业务逻辑service层 (22)4.4.6工具箱Utils (23)4.5.7 Actions (23)5.系统实现 (24)5.1用户注册登录模块 (24)5.1.1用户注册 (24)5.1.2用户登录 (26)5.2在线用户显示模块 (27)5.3用户交流聊天模块 (28)5.4聊天信息显示模块 (30)5.5系统消息显示模块 (31)6管理员管理用户模块 (32)5.7辅助功能 (33)6. 总结 (35)6.1开发中遇到的问题 (35)6.2问题分析与解决方法 (35)6.3经验与教训 (36)附录 (40)摘要随着Internet的普及,越来越多的人们建立了自己的WWW网站,人们通过网站可以展示产品,发布最新动态,与用户进行交流和沟通,与合作伙伴建立联系,以及开展电子商务等。
课程设计答辩记录 教师主要 提问记录
学生回答 问题情况
课程设计成绩评定 答辩成绩(50%) 课程设计报告撰写质量(50%) 总分
是否同意通过 □同意 □不同意 答辩小组成员签名: 年 月 日 信息工程学院 课程设计
基于JAVA的聊天系统的设计与实现
作者: 王时成 班 级: 网络094班 学 号: 2009121150 指导教师: 曾令明 日 期: 2011年 12月 12 日
作者签名:
封面 基于JAVA的聊天系统的设计与实现 摘 要 随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。与此同时,也造成了很多的问题,比如员工上班聊QQ等等,为了防止这类事件,并且利用企业部门和部门之间,员工和员工之间以及员工与部门之间的交流,需要企业拥有自己的一套交流系统。该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。经过分析这些情况,该局域网聊天工具采用MyEclipse为基本开发环境和java语言进行编写,首先可在短时间建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统
关键词:局域网 聊天 socket java 目 录 \ 1引言 ......................................................................... 1 1.1课题背景 ................................................................... 1 1.2 本文的主要工作 ............................................................. 1
2聊天系统的需求分析以及开发工具 ................................................ 1 2.1系统目标 ................................................................... 1 2.2系统具备的基本功能 ......................................................... 1 2.3开发环境及工具 ............................................................. 2
2.3.1开发环境 ............................................................... 2 2.3.2JAVA语言介绍 ........................................................... 2 2.3.3TCP/IP协议介绍 ......................................................... 6 2.3.4Socket简介 ............................................................. 7 3系统总体结构设计 ............................................................. 9 3.1基本简介 ................................................................... 9 3.2系统功能模块设计 .......................................................... 10
3.2.1数据库设计 ............................................................ 10 3.2.2 ER图 ................................................................. 11 3.2.3功能模块介绍 .......................................................... 11 4系统流程与实现 ...............................................................13 4.1系统设计流程 .............................................................. 13 4.2页面详细介绍 .............................................................. 13
5系统测试与分析 ...............................................................16 5.1测试 ...................................................................... 16 5.2测试中遇到的问题 .......................................................... 17
结 论 ......................................................................18 参考文献 ......................................................................18 1引言 1.1课题背景 根据当前网络的需求,网络聊天越来越受各种网民所青睐。因此开发网络聊天是相当有必要,而且在增加聊天功能,它不仅可以提高的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。而本人也学习过JAVA语言,对网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,本人就决定以《基于JAVA聊天系统的设计与实现》为软件设计,希望通过这一次的能进一步提高本人的网络开发编程的能力。
1.2 本文的主要工作 本文是对本次开发从构思到实现,再到测试整个开发过程中的环节进行描述的文档,提供给开发人员使用,能够理清思路。同时,也可以提供给其他人员,交流更加清楚。
2 聊天系统的需求分析以及开发工具
2.1系统目标 聊天系统的设计跟普通设计有着许多不同的地方,普通设计所考虑的因素,例如,普通需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点: 1、实现思想 在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。 2、服务器端工作流程 服务器端通过socket()系统调用创建一个Socket数组后(即设定了接受连接客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。如果有客户端连接请求,则在数组中选择一个空Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以在服务器上聊天了。 3、客户端工作流程 客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据就可以了。
2.2系统具备的基本功能 1)服务器端 服务器端应具备的以下的功能 1、开启/关闭服务; 2、查看在线的用户; 3、向全公司或者指定部门发送系统消息; 4、部门管理(包括增删改查); 5、用户管理(包括增删改查); 6、日志查看; 2)客户端 客户端具备以下功能 1、登录服务器; 2、修改密码; 3、查看系统消息、部门消息以及好友消息(包括离线消息); 4、查看所有用户(包括离线用户); 5、聊天功能; 6、退出登录;
2.3开发环境及工具
2.3.1开发环境 主要开发工具:MyEclipse 9.0 +SQL 2008 辅助开发工具:ERstido 8.0、Viso 2003
2.3.2JAVA语言介绍 (一)JAVA的主要特点 Java语言有下面一些特点:简单、面向对象、分布式、解释执行、鲁棒、 安全、体系结构中立、可移植、高性能、多线程以及动态性。 1.简单性 Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。Java略去了运算符重载、多重继承等模糊的概念,,且通过实现自动垃圾收集大大简化了程序设计者的存管理工作。另外,Java也适合于在小型机上运行,它的基本解释器及类的支持只有40KB左右,加上标准类库和线程的支持也只有215KB左右。库和线程的支持也只有215KB左右。 2.面向对象 Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。 3.分布性 Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其它对象。 4.鲁棒性 Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它