JAVA课程设计聊天室系统

合集下载

本科毕业论文-基于JAVA的聊天系统的设计与实现【范本模板】

本科毕业论文-基于JAVA的聊天系统的设计与实现【范本模板】

摘要随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐.目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。

该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。

前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。

后者通过与服务器建立连接,来进行客户端与客户端的信息交流。

其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。

开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。

在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。

经过分析这些情况,该局域网聊天工具采用Eclipse为基本开发环境和java 语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统关键词:局域网聊天 socket javaAbstractAlong with the fast development of Internet,the network chating tool has already become one kind of important communication tools and received more and more web cams favor. At present, many extremely good chating tools have appeared . for example,Netmeeting, QQ,MSN—Messager and so on. This system development mainly includes two aspects of the server procedure of the network chat and the customer procedure of the network chat。

java聊天室部分主要代码

java聊天室部分主要代码

ChatClient.javaimport java.awt.*;import java.io.*;import .*;import java.applet.*;import java.util.Hashtable;public class ChatClient extends Applet implements Runnable{ Socket socket=null;DataInputStream in=null;//读取服务器端发来的消息DataOutputStream out=null;//向服务器端发送的消息InputInfo 用户名提交界面=null;UserChat 聊天界面=null;Hashtable listTable;//用于存放在线用户的用户名的散列表Label 提示条;Panel north,center;Thread thread;public void init(){setSize(1000,800);int width=getSize().width;int height=getSize().height;listTable=new Hashtable();setLayout(new BorderLayout());用户名提交界面=new InputInfo(listTable);int h=用户名提交界面.getSize().height;聊天界面=new UserChat("",listTable,width,height-(h+5));聊天界面.setVisible(false);提示条=new Label("正在连接到服务器...",Label.CENTER);提示条.setForeground(Color.red);north=new Panel(new FlowLayout(FlowLayout.LEFT));center=new Panel();north.add(用户名提交界面);north.add(提示条);center.add(聊天界面);add(north,BorderLayout.NORTH);add(center,BorderLayout.CENTER);validate();}public void start(){if(socket!=null&&in!=null&&out!=null){try{socket.close();in.close();out.close();聊天界面.setVisible(false);}catch(Exception ee){}}try{socket=new Socket(this.getCodeBase().getHost(),6666);in=new DataInputStream(socket.getInputStream());out=new DataOutputStream(socket.getOutputStream());}catch(IOException ee){提示条.setText("连接失败");}//客户端成功连接服务器端if(socket!=null){InetAddress address=socket.getInetAddress();提示条.setText("连接:"+address+"成功");用户名提交界面.setSocketConnection(socket,in,out);north.validate();}if(thread==null){thread=new Thread(this);thread.start();}}public void stop(){try{socket.close();thread=null;}catch(IOException e){this.showStatus(e.toString());}}public void run(){while(thread!=null){if(用户名提交界面.getchatornot()==true){聊天界面.setVisible(true);聊天界面.setName(用户名提交界面.getName());聊天界面.setSocketConnection(socket,in,out);提示条.setText("祝聊天快乐!");center.validate();break;}try{Thread.sleep(100);}catch(Exception e){}}}}ChatMain.javaimport .*;import java.util.*;public class ChatMain {public static void main(String args[]) {ServerSocket server=null;Socket you=null;Hashtable peopleList;peopleList=new Hashtable();while(true){try{//服务器端在端口6666处监听来自客户端的信息server=new ServerSocket(6666);}catch(IOException e1){System.out.println("正在监听");}try{//当服务器端接收到客户端的消息后,取得客户端的IP地址。

Java网络聊天室系统

Java网络聊天室系统
panel.add(lb2);
lb2.setPreferredSize(new Dimension(50,30));
lb2.setBounds(100, 150, 100, 30);
panel.add(txtName);
txtName.setBounds(200, 150, 150, 30);
}catch(Exception e){e.printStackTrace();}
public RegisterFrame(LoginFrame loginFrame)
{
this.f = loginFrame;
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //设置外观为系统本地外观
this.setPreferredSize(new Dimension(500,500));
this.setBounds(screenSize.width/2-250, screenSize.height/2-250, 500, 500);
this.setVisible(true);
getContentPane().add(lb1);
lb1.setFont(new Font("",Font.BOLD,30));
lb1.setBounds(200, 100, 400, 50);
getContentPane().add(panel);
panel.setLayout(null);
panel.setVisible(true);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

Java课程设计聊天室(含代码)

Java课程设计聊天室(含代码)

Java程序课程设计任务书JAVA聊天室的系统的设计与开发1.主要内容:用JAVA实现基于C/S模式的聊天室系统。

聊天室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。

2.具体要求(包括技术要求等):系统的功能要求:A.服务器端主要功能如下:1.在特定端口上进行侦听,等待客户端连接。

2.用户可以配置服务器端的侦听端口,默认端口为8888。

3.向已经连接到服务器端的用户发送系统消息。

4.统计在线人数。

5.当停止服务时,断开所有的用户连接。

B.客户端的主要功能如下:1.连接到已经开启聊天服务的服务器端。

2.用户可以配置要连接的服务器端的IP地址和端口号。

3.用户可以配置连接后显示的用户名。

4.当服务器端开启的话,用户可以随时登录和注销。

5.用户可以向所有人或某一个人发送消息。

学习并掌握一下技术:Java JavaBean 等熟练使用一下开发工具:Eclipse, JCreator 等实现系统上诉的功能。

3.进度安排:12月28日 ~ 12月29日:课程设计选题,查找参考资料12月30日 ~ 1月1日:完成系统设计1月2日 ~ 1月5日:完成程序代码的编写1月6日:系统测试与完善1月7日:完成课程设计报告,准备答辩4.主要参考文献:[1].张广彬孟红蕊张永宝.Java课程设计(案例精编)[M].清华大学出版社.2007年版摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。

基于Java网络编程的强大功能,本次毕业设计使用Java编写一个聊天系统。

一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQL Server2000完成并通过JDBC-ODBC桥访问数据库。

Java聊天室的设计与实现毕业设计论文

Java聊天室的设计与实现毕业设计论文

毕业设计说明书Java聊天室系统的设计与实现2017 年 5 月 17日Java网络聊天室系统的设计与实现摘要:计算机从出现到现在有了飞速的发展,现阶段的计算机已经不单单是用于进行运算的独立的个体了,跟随计算机一同发展的还有互联网技术,经过了长久的发展,互联网技术有了日新月异的发展,它的发展速度和计算机的发展速度一样的恐怖,从出现一直到现在,它已经在人们的生活的各个方面发挥着自己的作用,而且是不可替代的作用。

因为计算机发展到现在已经成为一种廉价的生活物品,可以预想到未来人们都会使用计算机,上网的人也会逐渐增多,会有不断的人完善和更新出更好更棒的互联网服务,来提高自己的生活水平。

我国近几年经济和社会在不断的发展,互联网也得到了广大的支持,网络更是已经融入了广大人民的日常生活。

在计算机编程方面,互联网软件开发逐步转向以java为首的面向对象的编程技术,传统的面向过程的编程技术已经逐渐退出了历史的舞台,java正以不可思议的速度发展。

人们日常的生活,教育,网银,网购,面对面的网上视频,以及现在逐渐被大众接受的网络游戏都在使用面向对象的技术。

而且java自身的优势以及特点能够真正减少了企业的开发成本和开发人员的开发时间和难度。

在以前,人们获取信息的方式十分单一,通过电视,广播,信件以及人们的口头相传,这种方式效率十分的底下,得到的信息也很局限。

现阶段上网查找成为人们获取信息的主要途径,它具有快速,方便,以及传递的特点。

所以人们对网上的即时面对面聊天产生了需要。

一个界面清新,简单,并且高效的网络聊天室一定会受到大众的喜爱。

为了这个目的,构建此聊天系统。

本文将介绍网络聊天室程序的设计与完成。

关键词:网络聊天室;Java;客户机/服务器;Socket;Java chat room system design and implementation Abstract:With the development of Internet technology, network technology is developing very fast in the area of computer technology, one of emerged from it until now, it in many aspects, such as politics, economy, life play an irreplaceable role. With the growing popularity of the computer and popularization, the future will be more and more people use the Internet, enjoy the constantly update and improve the network services, to improve the level of their work lives. With the development of our economy and the popularization of the Internet, the Internet technology is also used more in the daily life of people. In application development and process oriented programming technology is gradually replaced by object-oriented programming technology, the computer software design and development has become the dominant, especially in the development of network technology, the object-oriented Java language programming is development rapidly in explosive. Remote education, online banking, shopping online, video online, and online games are all using object-oriented Java technology. And Java portable features enable Java programs to be compiled into bytecode that is not relevant to the platform, which enables Java programs to run on machines with Java interpreters. It really reduces the development cost of the enterprise and the development time and difficulty of the developer.In today's society, people's lives have long been inseparable from the Internet. In the future, the life and work of society will depend more on the development of digital technology, more and more networked, digital, electronic and virtualized. E-commerce is also becoming more and more relevant with the development of the Internet and people's life. The use of the development of the Internet and the current situation and development trend, can believe network technology step by step change our work and lifestyle, and social values will all change of step by step.In today's rapid development of network, the query on the Internet become people to quickly get published, and transfer information important channel, it in many aspects, such as people, political economy, life play an important role. Traditional letter-writing methods do not satisfy people's immediate demand for information. Thus, can chat face to face on the Internet become important human needs, a popular chat tools should be: interface and pure and fresh, simple operation, humanity, saving system resources. For this purpose, build the chat system.This paper completes the development of an online chat room program through Java's sockets. This article introduces the design and completion of network chat room program.Key words:chat rooms; the Java; Client / Server;the Socket;目录摘要 (I)Abstract ................................................ 错误!未定义书签。

多人聊天室的设计与实现

多人聊天室的设计与实现

山东财经大学基于JSP+JavaBean+MySQL在线多人聊天室系统设计成员: 06组多人聊天室学院: 计算机科学与技术学院专业:计算机科学与技术关键词:在线聊天室,JSP,MYSQL,JAVABEAN。

概述1 在线聊天室概述聊天室实现的主要功能是:接收各个客户端的聊天信息,然后按照其聊天对象将该信息发送到目标浏览器上。

在一个浏览器的窗口中,既能输入上网者的发言,又能看到自己与他人的聊天记录。

同时,为了便于上网者选择谈话对象,窗口中需要提供目前在线者的名单。

2. 需求分析2.1 确定对系统的综合要求1.功能需求:用户打开浏览器,注册登录,登录成功后选择自己喜欢的房间,点进去聊一下,发现可聊天,这东西可以用;有些玩家大家不喜欢,乱刷屏,就会要求管理员把他踢掉,管理员犀利踢之;有些用户之间的聊天不喜欢被人看到,就有了悄悄话的选项;有些用户喜欢添油加醋,聊天内容字体颜色,动作表情都可以添加。

2.性能需求:为了保证系统能够长期、安全、稳定、可靠、高效的运行,系统应该满足以下的性能需求:如果聊天室长期开发,必须考虑数据库的负载,管理员有清理数据库的权限;本聊天室使用数据库,信息与数据库的连接是很频繁的,我们使用JavaBean,能轻松实现数据库与外部信息的交换;2.2 分析建模2.2.1功能模型数据流图如图2-2所示:图2-2 数据流2.3 系统逻辑模型2.3.1用户信息实体E-R 图JSPJavaBeanMySQL调用返回结果操作数据库 返回记录用户Id 号用户名密码最近登录时间是否为管理员聊天信息所在房间发表人用户名发表对象用户名发表时间动作和表情聊天内容 是否悄悄话Id发送在线用户Id用户名所在房间最近聊天时间登录M 1113. 在线聊天室设计3.1 模块图以上为模块图3.2 模块说明分为4个模块:1.数据库通用管理模块:完成数据库的连接,查询,更新功能 封装在JavaBean 中(DBConn.java) JSP 页面或者其他JavaBean 可以通过调用DBConn 对象的方法 连接 操作数据库。

基于JAVA的多人聊天室的系统设计

基于JAVA的多人聊天室的系统设计

一、系统设计
1、用户界面设计
1、用户界面设计
聊天室的用户界面设计应遵循简单、直观、易用的原则。在聊天室中,用户 可以通过文本、语音、文件传输等多种方式进行交流。因此,界面设计中应包括 聊天窗口、语音聊天窗口、文件传输窗口等功能。
2、代码实现和优化
2、代码实现和优化
聊天室的代码实现应采用模块化的设计思想,将不同的功能模块进行分离, 以便于维护和扩展。在代码优化方面,应采用多线程技术,提高系统的并发性能 和稳定性。同时,应注意代码的健壮性和安全性,防止恶意攻击和数据泄露。
三、技术选型
1、系统架构
1、系统架构
本系统采用C/S架构,由客户端和服务器端两部分组成。客户端负责用户界面 的展示和用户数据的发送,服务器端负责用户注册登录的验证、聊天记录的存储 和管理、以及语音和文件传输等功能。
2、开发工具与技术方案
2、开发工具与技术方案
本系统开发使用JAVA语言,采用Eclipse作为开发工具。在技术方案上,我 们采用了多线程技术实现并发处理,使用Socket进行网络通信,同时采用了 JavaFX和Swing等前端技术进行界面设计。
2、常见问题与解决方法
2、常见问题与解决方法
在测试过程中,我们遇到了一些问题,如网络延迟、掉线、卡顿等现象。针 对这些问题,我们采用了如下解决方法:采用心跳检测机制来检测掉线和卡顿现 象;通过缓存技术来减少网络传输次数;优化代码算法来提高程序响应速度。
3、系统维护与改进
3、系统维护与改进
为了保证系统的稳定性和安全性,我们需要对系统进行日常维护和升级。具 体工作包括:定期备份数据、更新安全补丁、优化系统性能等。同时,我们将持 续收集用户的反馈意见和建议,以便对系统进行改进和优化。

JAVA课程设计报告聊天室

JAVA课程设计报告聊天室

JAVA课程设计报告聊天室一、课程目标知识目标:1. 学生能理解网络编程的基本概念,掌握JAVA Socket编程的基础知识。

2. 学生能运用面向对象编程思想,设计并实现聊天室客户端与服务器的数据传输功能。

3. 学生了解并掌握多线程技术在网络编程中的应用。

技能目标:1. 学生能运用所学知识,独立编写并调试简单的聊天室程序。

2. 学生具备分析问题、解决问题的能力,能针对聊天室程序进行优化和改进。

3. 学生能在团队协作中发挥自己的作用,与他人共同完成一个完整的网络编程项目。

情感态度价值观目标:1. 学生培养对计算机编程的兴趣,增强学习JAVA的自信心。

2. 学生认识到团队合作的重要性,培养良好的团队协作精神。

3. 学生通过编程实践,体验创新与创造的乐趣,培养积极向上的学习态度。

本课程针对高年级学生,结合课本内容,注重理论与实践相结合,以提高学生的实际编程能力为主要目标。

课程要求学生在掌握基本知识的基础上,能够独立完成实际项目,培养其分析问题、解决问题的能力。

同时,课程强调团队协作,使学生学会与他人共同进步,共同成长。

通过本课程的学习,使学生达到知识、技能和情感态度价值观的全面提升。

二、教学内容1. 网络编程基础理论:介绍网络编程的基本概念,包括IP地址、端口号、协议等,使学生理解网络通信的基本原理。

- 教材章节:第三章 网络编程基础2. JAVA Socket编程:讲解Socket编程的原理,指导学生掌握客户端与服务器之间的数据传输方法。

- 教材章节:第四章 Socket编程3. 面向对象编程:运用面向对象编程思想,设计聊天室程序,包括类的定义、封装、继承与多态。

- 教材章节:第二章 面向对象编程基础4. 多线程技术:介绍多线程编程的概念,分析在聊天室程序中如何实现多用户并发通信。

- 教材章节:第五章 多线程编程5. 聊天室程序设计与实现:指导学生完成聊天室客户端与服务器的编写,实现基本的功能需求。

JAVA聊天室程序设计实验报告

JAVA聊天室程序设计实验报告

JIANGXI AGRICULTURAL UNIVERSITY JAVA课程设计报告题目:聊天室程序设计学院:姓名:学号:专业:年级:指导教师:2011年12月一、系统需求分析1、课题背景在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、MSN,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个有简单聊天功能的网络聊天程序;而且通过制作该程序还能更好的学习网络软件编程知识。

本课程适用于软件工程等本科专业。

参加本课程设计的学生,应当认真完成本课程设计的全部过程。

并以最终课程设计成果来证明其独立完成各种实际任务的能力。

从而,反映出理解和运用本课程知识的水平和能力。

2、功能要求运用java程序编写聊天室,实现简单的聊天功能。

它是图形界面,线程,流与文件系统等技术的综合应用。

其界面主要采用了java.awt包,java.swing包以及java.util包等。

程序实现了聊天室的基本功能,其中有:1、启动服务器。

2、进入客户端界面。

3、登录聊天室。

4、发送信息(实现按回车键发送消息)。

5、关闭服务器。

3、运行环境本程序基于java和UltraEdit开发环境,可以在一般的装有windows系统的主机上运行。

4、功能实现1、采用套接字实现网络中的数据传输2、尽量使用某个或某些应用层的协议实现系统的部分功能3、系统设计规范合理,操作流程方便简单二、系统总体设计1、设计思路聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。

因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。

Java聊天系统设计课程设计说明书

Java聊天系统设计课程设计说明书

Java聊天系统详细设计1 引言1.1编写目的聊天系统详细设计是设计的第三个阶段,这个阶段的主要任务是在聊天概要设计的基础上,对概要设计中产生的功能模块进行过程描述,设计功能模块的内部细节,包括数据结构和算法,为编写源代码提供必要的说明。

概要设计解决了软件系统总体设计问题,包括整体软件系统的结构,功能模块的划分,模块功能和模块间的联系等,详细设计则是要解决如何实现各个模块的内部功能,及模块设计,具体的说,模块设计就是为已经产生的聊天系统各个子系统设计详细的算法,但这并不等同于系统实现阶段用具体语言编码,它只是对实现细节做精确的描述,这样编码阶段就可以将详细中对功能实现的描述,直接翻译,转化为用某种程序设计语言写的程序。

1.2 背景根据山东科技大学教学要求,实现理论与实践相结合的办学理念,培养21世纪高素质人才,校方安排了与操作系统课程相关的课程设计。

1.3 定义1. 项目名称:Java聊天系统2. 项目提出者:山东科技大学3. 项目开发者:三个臭皮匠小组4. 用户:聊天群5. 运行环境:XP, win7,win8 unix操作平台6. 开发平台:Eclipse 、Java7.Eclipse:软件开发工具,J2EE可视化开发平台。

8.Java :面向对象开发语言。

1.4 参考资料[1]《软件工程实验指导书》清华大学出版社2003[2]王珊,萨师煊编著《数据库系统概论》高等教育出版社2006[3]钱乐秋编著《软件工程》清华大学出版社2007[4]张海藩编著《软件工程导论》清华大学出版社2008[5]汤子瀛编著《计算机操作系统》第三版西安电子科技大学出版社2007 2.总体设计2.1 需求概要(1)用户注册模块:对于有意使用本产品的用户首先要登陆我官网并打开相关的账户注册链接,进入账户注册页面。

根据相关提示操作:输入账户名,密码,确认密码,注册邮箱等(详细内容请到官网查询),在填写完相关信息后点击“注册”,会提示用户注册成功,并会给启用注册邮箱发送注册成功激活链接,用户只有通过打开邮箱激活成功以后才能登陆并使用本聊天软件(sisi)。

javaweb聊天室课程设计

javaweb聊天室课程设计

javaweb聊天室课程设计一、课程目标知识目标:1. 学生能够理解Java Web编程基本原理,掌握Servlet和JSP技术;2. 学生能够运用所学知识设计并实现一个基于B/S架构的聊天室;3. 学生了解Web应用中客户端与服务器端的通信机制,掌握HTTP协议的基本使用。

技能目标:1. 学生能够独立完成聊天室的需求分析、设计、编码和测试工作;2. 学生能够运用HTML、CSS和JavaScript等前端技术实现界面设计,提高用户体验;3. 学生能够通过本课程的学习,培养解决实际问题的能力,提高编程实践技能。

情感态度价值观目标:1. 学生培养团队协作精神,学会与他人共同解决问题;2. 学生养成积极主动、勇于探索的学习态度,提高自主学习能力;3. 学生认识到编程在实际应用中的价值,增强对信息技术的兴趣和热爱。

课程性质:本课程为实践性较强的课程,旨在让学生通过实际项目开发,掌握Java Web编程技术。

学生特点:学生已具备一定的Java基础和Web前端技术,具有较强的学习能力和实践能力。

教学要求:教师需引导学生运用所学知识,以项目驱动的方式开展教学活动,注重培养学生的实际编程能力和团队协作能力。

在教学过程中,将目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. Java Web基本原理:介绍Java Web编程的基础知识,包括Servlet的生命周期、请求和响应处理、会话管理等内容,关联课本第3章。

2. JSP技术:讲解JSP的运行机制、内置对象、标签库等,帮助学生掌握JSP 编程,关联课本第4章。

3. 前端技术:回顾HTML、CSS和JavaScript基础知识,强调其在聊天室项目中的应用,关联课本第1章和第2章。

4. 客户端与服务器端通信:讲解HTTP协议的基本原理和通信过程,分析聊天室中客户端与服务器端的交互,关联课本第5章。

5. 聊天室需求分析:引导学生进行需求分析,明确聊天室的功能需求,关联课本第6章。

基于javaEE 的Web的聊天室设计与实现

基于javaEE 的Web的聊天室设计与实现
表41聊天室用户表字段名数据类型长度含义备注用户id用户名密码最近登录时间是否为管理员聊天信息所在房间发表人用户名发表对象用户名发表时间动作和表情聊天内容是否悄悄话id发送在线用户id用户名所在房间最近聊天时间登录idintprimarykeyautoincrementusernamevarchar45用户名nulluserpasswordvarchar45nulllastlogintimedatetime上次登录时间roleint权限角色1管理员0普通会员保存了用户聊天内容信息表结构描述如下表42所示
第 5 章 系统设计与实现...............................................................................................................13 5.1 系统模块分析...................................................................................................................13 5.2 系统的具体实现...............................................................................................................13 5.2.1 注册登录模块.........................................................................................................13 5.2.2 聊天室选择模块.................................................................................................... 14 5.2.3 聊天主界面模块.................................................................................................... 15 5.2.4 系统管理员模块......................................................................................................16

Java聊天室的设计与实现毕业设计开题报告

Java聊天室的设计与实现毕业设计开题报告
[5]施霞萍等编著.Java程序设计教程第2版.北京:机械工业出版社,2006
[6] [美]Herbert Schidt著.Java参考大全.鄢爱兰.鹿江春译.北京:清华大学出版社,2006
[7]宛延闿等编著.实用Java程序设计教程.北京:机械工业出版社,2006
[8]陈国君等编著.Java2程序设计基础.北京:清华大学出版社,2006
3.显示用户:用户列表中可以看到自己的好友用户并区分在线和离线状态;
4.该系统客户端用户能够进行信息的发送和接受;
客户端关闭:关闭客户端图形用户界面,关闭客户端。
毕业设计开题报告
指导教ቤተ መጻሕፍቲ ባይዱ意见:
该生对本课题相关的知识与理论研究比较透彻,参考了许多的文献资料,具有一定的研究价值。
本课题结构合理,内容完整,主要观点突出,并且时效性强,是学生学习方向的延续,对于提高学生的能力有利。
同意该课题开题。
指导教师:
2017年2月21日
所在系审查意见:
同意开题
系主任:
年月日
3.指导教师对该学生前期研究工作的评价(是否同意继续研究工作)
指导教师亲笔签字:
年月日
备注:1、本表由学生填写,指导教师亲笔签署意见。
2、以上各项句间距可以根据实际内容需要调整。
参考文献:
[1]王路群,《Java高级程序设计》中国水利水电出版社2006
[2] Rogers Cadenhead著、梅兴文译,《Java编程入门经典》人民邮电出版社2007
[3]任泰明,《TCP/IP网络编程》人民邮电出版社2009
[4]柳西玲.许斌编著.Java语言应用开发基础.北京:清华大学出版社,2006
毕业设计开题报告
2.本课题要研究或解决的问题和拟采用的研究手段(途径):

利用JAVA实现简单聊天室

利用JAVA实现简单聊天室

利用JAVA实现简单聊天室1.设计思路Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。

而且,Java 很小,整个解释器只需215K的RAM。

因此运用JAVA程序编写聊天室,实现简单聊天功能。

程序实现了聊天室的基本功能,其中有:(1)启动服务器:实现网络的连接,为注册进入聊天室做准备。

(2)注册登陆界面:填写基本信息如姓名等,可以供多人进入实现多人聊天功能。

(3)发送信息:为用户发送信息提供平台。

(4)离开界面:使用户退出聊天室。

(5)关闭服务器:断开与网络的连接,彻底退出聊天室。

2.设计方法在设计简单聊天室时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。

3 程序功能图及程序相关说明(1)主功能框图(2) 聊天室基本功能表4.程序代码是说明程序中引入的包:package Chat; import .*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import java.io.*;(1)服务器端代码中用户自定义类:类名:Server作用:服务器启动继承的接口名:ActionListenerpublic class Server implements ActionListener{定义的对象:count //记录点机关闭按钮次数2次关闭soconly //只有SOCKET,用于群发sockets//所有客户的SOCKETsocket_thread //Socket所在的线乘,用于退出;frame // 定义主窗体panel //定义面板start,stop //启动和停止按钮主要成员方法:public void center //定义小程序查看器的位置public void actionPerformed //定义处理异常机制定义子类:serverRun,Details继承的父类名:Threadclass serverRun extends Thread //启线乘用于接收连入的Socket class Details extends Thread //具体处理消息的线乘,只管发送消息创建一个ServerSocket 对象,用于接受指定端口客户端的信息ServerSocket server = new ServerSocket("1234");接受请求时候,通过accept()方法,得到一个socket对象。

java聊天室 实验报告

java聊天室 实验报告

java聊天室实验报告Java聊天室实验报告引言:聊天室是一种通过网络连接,允许用户在同一平台上进行实时交流的应用程序。

随着互联网的普及,聊天室成为人们日常生活中不可或缺的一部分。

本实验旨在通过使用Java编程语言,设计和实现一个简单的聊天室应用程序,并探讨其实现过程中所涉及的关键技术和挑战。

一、项目背景随着网络技术的飞速发展,人们对于实时交流的需求不断增加。

聊天室作为一种方便快捷的交流工具,受到了广大用户的欢迎。

本项目旨在利用Java编程语言,实现一个基于网络的聊天室应用程序,以满足用户的实时交流需求。

二、项目目标1. 设计和实现一个基于Java的聊天室应用程序。

2. 实现用户之间的实时消息传递功能。

3. 提供可靠的用户身份验证机制,确保聊天室的安全性。

4. 实现聊天记录的存储和查看功能,方便用户回顾历史消息。

三、技术实现1. 服务器端在服务器端,我们使用Java的Socket编程实现了与客户端的连接和通信。

通过建立一个服务器Socket,监听指定端口,可以接受来自客户端的连接请求。

一旦连接建立,服务器端就会创建一个新的线程来处理该客户端的请求,并实现实时消息的传递和处理。

2. 客户端在客户端,我们同样使用Java的Socket编程实现了与服务器端的连接和通信。

客户端通过建立一个Socket,指定服务器的IP地址和端口号,即可与服务器建立连接。

客户端通过输入消息并发送给服务器,同时接收来自服务器的消息并显示在界面上。

3. 用户身份验证为了确保聊天室的安全性,我们使用了用户身份验证机制。

在用户登录时,客户端将用户名和密码发送给服务器端。

服务器端通过验证用户信息的正确性,返回登录结果给客户端。

只有通过身份验证的用户才能进入聊天室并参与实时交流。

4. 聊天记录存储为了方便用户回顾历史消息,我们实现了聊天记录的存储和查看功能。

服务器端将接收到的消息保存在数据库中,并提供查看聊天记录的接口。

用户可以通过指定时间范围或关键词来查询历史消息,以便回顾和查找需要的信息。

Java使用eclipse做聊天室程序

Java使用eclipse做聊天室程序

使用eclipse 做聊天程序Server=new ServerSocket(50000)s=server.accept()dataIn=new DataOutputStream( s.getInputStream()) dataOut=new DataInputStream( s.getOutputStream())dataIn.readUTF()dataOut.writeUTF() s=new Socket(“localhost”,5000)dataIn=new DataInputStream ( s.getInputStream()) dataOut=new DataInputStream( s.getOutputStream())dataIn.readUTF()dataOut.writeUTF()1、Create a Java project2、Create a class3、Wtite codeimport java.awt.*;import java.awt.event.*;import java.io.*;import .*;public class chat1{public static void main(String[] args){new chatframe("ChatroomSever");}}class chatframe extends Frame{ServerSocket server=null;Socket s=null;DataInputStream dataIn=null;DataOutputStream dataout=null;Panel p1,p2;Button bs,bl;TextArea t1;Label l;TextField t2;chatframe(String ss){ super(ss);p1=new Panel();p2=new Panel();t1=new TextArea();l=new Label("消息:");t2=new TextField("大师兄,我去捉妖精吧! ",36);bs=new Button(" 发送");bl=new Button(" 启动");bl.addActionListener(new ActionListener(){public void actionPerformed(java.awt.event.ActionEvent e){try{server=new ServerSocket(5000);s=server.accept();dataIn=new DataInputStream(s.getInputStream());dataout=new DataOutputStream(s.getOutputStream());}catch(Exception e1){}dp gg=new dp();Thread yy=new Thread(gg);yy.start();}});bs.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try{dataout.writeUTF("八戒说: "+t2.getText());t1.append("八戒说: "+t2.getText()+"\n");}catch(IOException e1){}}});addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent ee){System.exit(0);}});setLayout(new FlowLayout());p1.add(t1);add(p1);p2.setLayout(new FlowLayout());p2.add(bl);p2.add(l);p2.add(t2);p2.add(bs);add(p2);setBounds(100,100,460,260);setVisible(true);}class dp implements Runnable{public void run(){while(true){try{t1.append(dataIn.readUTF()+"\n");}catch(IOException gg){}}}}}4、Run the project5、Client end :import java.awt.*; import java.awt.event.*; import java.io.*; import .*;public class chat2{public static void main(String[] args){new chatframe("ChatroomClient");}}class chatframe extends Frame{ServerSocket server=null;Socket s=null;DataInputStream dataIn=null;DataOutputStream dataout=null;Panel p1,p2;Button bs,bl,bx;TextArea t1;Label l;TextField t2;chatframe(String ss){super(ss);p1=new Panel();p2=new Panel();t1=new TextArea();l=new Label("消息:");t2=new TextField("那你就去吧,别让妖精迷住! ",36);bs=new Button(" 发送");bl=new Button(" 连接");bl.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try{s=new Socket("localhost",5000);dataIn=new DataInputStream(s.getInputStream());dataout=new DataOutputStream(s.getOutputStream());}catch(IOException gg){}dp gg=new dp();Thread yy=new Thread(gg);yy.start();}});bs.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try{dataout.writeUTF("悟空说: "+t2.getText());t1.append("悟空说: "+t2.getText()+"\n");}catch(IOException e1){}}});addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent ee){System.exit(0);}});setLayout(new FlowLayout());p1.setLayout(new BorderLayout());p1.add(t1);add(p1);p2.setLayout(new FlowLayout());p2.add(bl);p2.add(l);p2.add(t2);p2.add(bs);add(p2);setBounds(100,100,460,260);setVisible(true);}class dp implements Runnable{public void run(){while(true){try{t1.append(dataIn.readUTF()+"\n");}catch(IOException gg){}}}}}2008-5-28 5:37于惜福镇王家村宿舍。

聊天室系统

聊天室系统

聊天室系统聊天室对于众多网民来说并不陌生,它是网络上大家讨论交流的有效平台。

由于Java强大的Internet网络程序设计功能,很多聊天室服务器端都是采用Java语言进行实现。

本章所要介绍的开发案例就是利用JA V A实现一个简单的聊天室系统的服务器端。

7.1聊天室系统介绍网络聊天室是典型的网络应用程序,其一般采用客户/服务器结构来完成整个功能的设计,下面将概要讨论网络聊天室系统的设计。

7.1.1客户/服务器模式一般聊天室采用的是客户/服务器模式,我们熟悉的QQ聊天室就是采用这种结构模式。

它包含了两个完整的应用程序,即客户端程序和服务器端程序,如图4-1所示。

其中,多个客户端程序可以同时与一个服务器进行通信,然后通过服务器的统一处理而完成聊天室各种所需要的功能,如各客户端之间的信息发送和接收。

图7-1 ICQ的客户与服务器模式我们从上可以知道,要实现该通信模式,首先应在服务器和客户端之间定义一套通信协议,并通过创建套接字来建立连接,然后客户与服务器端再在该连接上进行可靠的传输和接收数据。

客户端发出请求,服务器端监听各种请求并对其提供响应服务。

这也即典型的“请求—应答”模式。

7.1.2聊天室功能介绍聊天室用户功能用户注册新用户输入(用户登陆名,真实姓名,呢称,密码与确认密码),如果登陆名没有与系统中已注册的用户登陆名相同,且密码与确认密码一致,则系统报告该用户注册成功,否则提示错误消息。

用户登陆注册用户输入登陆名与密码,如果与系统中已注册的用户登陆名及密码匹配,则用户登陆成功,否则提示用户不存在或者密码不匹配。

用户登陆成功后,可以选择房间来发言聊天 参数设置(设置服务器IP,端口)在客户端设置聊天室服务器的参数,主要有IP地址和端口,把参数保存在一个XML 文件中,以便客户端重启时能读入设定的参数进入房间用户登陆成功后,可以从房间列表中选择某一房间进入,如果该房间的当前聊天室成员数没有超过该房间的限定人数,则系统允许该用户进入,否则提示该房间已满。

JAVA聊天程序设计代码及报告

JAVA聊天程序设计代码及报告

一.系统需求分析网络聊天室通常直称聊天室;是一种人们可以在线交谈的网络论坛;在同一聊天室的人们通过广播消息进行实时交谈..在当今信息时代;越来越多的聊天工具被应用;java语言是当今流行的网络编程语言;它具有面向对象;与平台无关;安全;多线程等特点..使用java语言不仅可以实现大型企业级的分布式应用系统;还能够为小型的的;嵌入式设备进行应用程序的开发..面向对象的开发是当今世界最流行的开发方法;它不仅具有更贴近自然地语义;而且有利于软件的维护和继承;锻炼我们熟练地应用面向对象的思想和设计方法解决实际问题的能力..本程序正是用java语言实现了简单聊天功能..它是图形界面;线程;流与文件系统等技术的综合应用..其界面主要采用了java.awt包;java.swing包等..二.系统总体设计1.对性能的规定由于本软件知识一个聊天程序;程序只提供用户之间的聊天功能;故对网络传输数据要求不是很高;只要正常的传输速度就可以了..2数据管理IP地址IP;端口Port3.开发环境本软件采用Java语言编写;Java语言是一种跨平台的编程语言;所以本软件对操作系统没有特别的要求..而网络传输方面采用TCP/IP网络传输协议或者是RMI..4.设计概要1本软件客户端与用户共用一段程序..客户端编译运行后;在窗口选择----侦听..用户编译运行后;在窗口选择----连接..2本软件实现的功能有1允许服务器侦听客户端;客户端连接到服务器2允许服务区与客户端之间进行聊天;3允许服务器与客户端更改背景颜色;4 允许服务器与客户端更改字体颜色;5服务器与客户端时;会显示内容发送时间;6允许服务器与客户端用鼠标点击“发送”;按ENTER键均可发送内容7允许服务器与客户端用鼠标点击关闭时关闭聊天窗口三.系统详细设计1.代码功能描述1程序中引入的包:import java.awt.;import java.awt.event.;import javax.swing.;import java.;import java.io.;2代码中自定义的类:类名:chatHouse继承的类:JFrame实现的接口:ActionListener; Runnable作用:构造服务器界面以及客户端界面..定义的对象: TextArea ta;JTextField ip;JTextField port;JButton btn_server;JButton btn_client;JButton btn_backGroundCol;JButton btn_fontCol;JTextField send_text;JButton btn_send;JButton btn_close;JLabel pic;Socket skt;构造方法:public chatHouse主要成员方法:public void runpublic void actionPerformedActionEvent epublic void doServerpublic void doSend2.源代码chatHouse.javaimport java.awt.;import java.awt.event.;import javax.swing.;import java.;import java.io.;import java.util.;public class chatHouse extends JFrame implements ActionListener; Runnable{private TextArea ta;private JTextField ip;private JTextField port;private JButton btn_server;private JButton btn_client;private JButton btn_backGroundCol;private JButton btn_fontCol;private JTextField send_text;private JButton btn_send;private JButton btn_close;private JLabel pic;private Socket skt;public void run{try{BufferedReader br = new BufferedReadernew InputStreamReaderskt.getInputStream;whiletrue{String s = br.readLine; // 从网络读ifs==null break;ta.appends + "\n";}}catchException e{e.printStackTrace;}}public void actionPerformedActionEvent e{ife.getSource==btn_server{doServer;}ife.getSource==btn_client{doClient;}ife.getSource==btn_send{doSend;}}public void doServer{try{ServerSocket server = newServerSocketInteger.parseIntport.getText;skt = server.accept;ta.append"连接成功\n";new Threadthis.start;}catchException e{ta.append"服务器启动失败\n";}}public void doClient{try{skt = new Socketip.getText; Integer.parseIntport.getText;ta.append"连接成功\n";new Threadthis.start;}catchException e{ta.append"连接失败\n";}}public void doSend{Calendar c=Calendar.getInstance;int y=c.getc.YEAR;int M=c.getc.MONTH+1;int d=c.getc.DAY_OF_MONTH;int h=c.getc.HOUR_OF_DAY;int mm=c.getc.MINUTE;int ss=c.getc.SECOND;try{PrintWriter pw = new PrintWriterskt.getOutputStream;String s = send_text.getText;ifs==null return;ta.appendy+"-"+M+"-"+d+" "+h+":"+mm+":"+ss+"\n";ta.appends+"\n";pw.printlny+"-"+M+"-"+d+" "+h+":"+mm+":"+ss;pw.printlns;pw.flush;send_text.setText"";}catchException e{ta.append"发送失败\n";}}public chatHouse{super"聊天室";this.setBounds100;100;550;430;Container cc = this.getContentPane;JPanel p1 = new JPanel;cc.addp1; BorderLayout.NORTH;JPanel p2 = new JPanel;cc.addp2;BorderLayout.CENTER;JPanel p3 = new JPanel;cc.addp3;BorderLayout.SOUTH;pic=new JLabelnew ImageIcon"12.gif";cc.addpic;BorderLayout.EAST;p1.addnew JLabel"IP: ";ip = new JTextField"127.0.0.1"; 10;p1.addip;p1.addnew JLabel"Port: ";port = new JTextField"7777"; 4;p1.addport;btn_server = new JButton"侦听";p1.addbtn_server;btn_client = new JButton"连接";p1.addbtn_client;btn_backGroundCol =new JButton"背景色";p1.addbtn_backGroundCol;btn_fontCol =new JButton"字体颜色";p1.addbtn_fontCol;p2.setLayoutnew BorderLayoutta = new TextArea;p2.addta; BorderLayout.CENTER;send_text = new JTextField"Hello.";p2.addsend_text; BorderLayout.SOUTH;btn_send = new JButton"发送";p3.addbtn_send; BorderLayout.WEST;btn_close =new JButton"关闭";p3.addbtn_close; BorderLayout.CENTER;//---------------------------------------"关闭"按钮监听器 btn_close.addActionListenernew ActionListener{public void actionPerformedActionEvent e{System.exit100;}};//--------------------------------------- 背景变色监听btn_backGroundCol.addActionListenernew ActionListener{public void actionPerformedActionEvent e{JColorChooser chooser4=new JColorChooser;Color color=chooser4.showDialognull;"背景颜";Color.yellow; ta.setBackgroundcolor;}};//---------------------------------------字体变色监听btn_fontCol.addActionListenernew ActionListener{public void actionPerformedActionEvent e{JColorChooser chooser4=new JColorChooser;Color color=chooser4.showDialognull;"字体颜色";Color.black; send_text.setForegroundcolor;ta.setForegroundcolor;}};//---------------------------------------按ENTER键可发送监听btn_server.addActionListenerthis;btn_client.addActionListenerthis;btn_send.addActionListenerthis;setDefaultCloseOperationJFrame.EXIT_ON_CLOSE;send_text.addKeyListenernew KeyAdapter{public void keyPressedKeyEvent e{ife.getKeyCode==KeyEvent.VK_ENTERdoSend;}};}public static void mainString args{new chatHouse.setVisibletrue;}}import java.util.;3.程序测试编译运行程序后;先选择对方IP;选择同样的Port..服务器先侦听;客户端再连接..连接成功;窗口会显示“连接成功”字样..接下来就可以聊天了..1 服务器与客户端聊天..2服务器与客户端聊天..服务器将背景颜色设为粉红;字体颜色设为蓝色.. 客户端将背景颜色设为蓝色;字体颜色设为红色..四.小结1.通过本次课程设计;使得自己懂得理论和实践相结合起来;从理论中得出结论;才能真正掌握这门技术;也提高了自己独立思考的能力;在设计的过程中;可以自己解决..真正体会到要将一门知识学的更深入;必须加强实践;多练习;才能发现问题所在..2..本程序实现的功能还比较简单不够完善;从中;我知道了自己的不足之处;决心增长自己的知识;设计更加好的程序;实现各种更加复杂的功能;如:传输文件;图片..以及登陆界面;昵称等..3.总的来说;这次实训对我很有帮助..让我学会了的不只是设计JAVA聊天室;更让我学会主动学习;而不是被动接收..这样才能更好的运用自己所学到的知识..另:附该代码所用到的图片 12.gif。

(完整word版)JAVA聊天室实验报告

(完整word版)JAVA聊天室实验报告

Java聊天室实验报告班级: ******学号: ********姓名:***目录:一、实验目的.。

.。

...。

.。

..。

..。

....。

..。

...。

...。

...。

..。

.。

.。

3二、所需技术 .。

.。

..。

.。

..。

..。

..。

.。

.。

.。

....。

.....。

.。

.。

.。

...。

3三、需求分析。

..。

.。

.。

..。

...。

.。

..。

.。

...。

..。

.。

.。

..。

3四、系统设计 .。

..。

.......。

...。

.。

....。

...。

.。

...。

....。

..。

.....。

.41、服务器结构 ..。

.。

..。

...。

.。

.。

.。

.。

...。

.....。

.。

.。

.。

42、客户端结构 ..。

.。

.....。

..。

...。

.。

..。

.。

.。

...。

.。

..。

.。

.。

4五、实现细节。

..。

...。

..。

...。

.....。

..。

..。

.。

....。

..。

..51、客户端细节。

.。

..。

.。

...。

..。

.。

..。

...。

..。

..。

.。

52、服务器细节 .。

.。

.。

....。

.。

.。

..。

.。

.。

..。

..。

..。

..。

.。

.。

..6六、系统展示。

...。

.。

.。

.。

.。

.。

.。

.。

.。

..。

..。

..。

..。

..。

.。

(7)七、实验小结。

.。

....。

..。

....。

.。

.。

...。

..。

...。

.。

.。

.。

..。

. (9)Rain153 WeChat 聊天室系统一、实验目的:1、使用Java技术完成聊天室系统,深入学习使用Java语言。

2、使用Java 的多线程机制,深入理解Java多线程技术的应用。

3、使用GUI,对JFrame的深入学习。

4、使用网络编程,掌握基于TCP协议的Socket编程,了解Socket编程的协议约定,掌握简单应用协议的开发.5、使用C/S架构,对网络编程有一定的了解。

二、所需技术本系统要求使用java技术开发。

所需知识包括java程序设计语言、swing基本GUI组件、多线程编程、socket编程、集成开发环境使用eclipse。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

J A V A课程设计聊天室系统-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIANJava课程设计指导书(学生版初稿)第二章聊天室系统目标背景介绍2.1.1 业务背景2.1.2 技术背景需求分析2.2.1功能需求分析2.2.2 业务对象分析2.2.3 验收测试要求系统设计2.3.1 总体设计2.3.2 详细设计系统实现小结展望第二章聊天室系统学习目标:1、理解基于网络的C/S模式的软件系统结构,掌握网络编程的基本概念。

2、了解Java 的多线程机制,掌握Java多线程技术的应用。

3、熟练掌握基于TCP协议的Socket编程。

4、了解Socket编程的协议约定,掌握简单应用协议的开发。

5、进一步巩固发展团队协作能力。

学习寄语:想必大家都用过QQ,其主要功能就是聊天,是不是很想知道它是如何实现的本项目就是帮你实现一个简单的聊天系统,当然跟商业项目没法比,但从中你却可以了解这些系统是如何实现的,学到开发类似系统的基础知识和基本技能(基本并不意味不实用)。

本章的内容有一定难度(多线程、基于TCP的应用协议编程),所以系统的开发采用了“增量迭代”的开发方式,由简易到繁难,希望你能顺利前行。

我们的信念依然是:“不抛弃,不放弃”。

你的改变和收获依然是老师真诚的期待,期待你更踏实、更自信。

Come on!背景介绍2.1.1 业务背景随着网络社会的不断发展,具有相同兴趣的网民需要互相远程交流,既要能省钱又要能即时交互,电话太贵、email又嫌慢,所以开发一个类似QQ 的及时通讯系统就变得非常有意义了。

“Happy Chat”聊天系统应运而生,它较之QQ的唯一好处是自主开发,用的放心,更适合在局域网内使用。

它提供的功能远不如QQ丰富,但应具有如下功能:(1)与聊天室成员一起聊天;(2)可以与聊天室成员私聊;(3)用户注册、登录;(4)服务器监控聊天内容;(5)服务器发送通知;(6)服务器踢人;(7)保存服务器日志。

(8)保存用户聊天信息。

2.1.2 技术背景本系统要求使用java技术开发,使用文件保存数据,集成开发环境使用eclipse。

开发者应有java程序设计语言、SWING基本GUI组件、多线程、文件使用、socket编程、使用eclipse的基本知识和技能。

系统采用两层C/S体系结构,C端负责通过GUI与客户交互,实现注册、登陆、收发信息、退出等功能; S端是聊天系统的应用服务器,主要有处理用户注册、登录、用户收发信息、用户退出等功能。

C端和S端是通过网络交互的,其基本原理如图1所示:图1 C/S通讯基本原理图首先服务器启动,它会建立一个专门用于接收客户端连接请求的“倾听Socket”(相当于总服务台,有固定的IP地址和端口号),然后等待客户的连接请求。

当用户想聊天时,从界面输入信息,然后与服务器建立Socket连接(连接时应指定服务器的IP地址和端口号,而客户端socket的端口由本方操作系统从空闲端口中确定),服务器端的“倾听Socket”收到连接请求后,一般会接受连接请求,并生成一个服务端socket(其端口号由服务端操作系统从空闲端口中确定),专门负责与此客户端socket的通信。

一旦连接请求成功,客户端将信息及请求通过本方socket的输出流发送给服务器端相应的socket,服务端则通过服务器端Socket的输入流接受客户端传输过来的信息及请求,分析是何请求,然后根据请求类型,进行相应的处理(如登录、转发信息等)。

服务方也可以根据需要,通过socket的输出流发信息和请求给客户端(公告)。

客户方和服务方都可以通过关闭本方的socket而结束一次通讯过程。

不难发现服务器需要能同时接受多个客户的请求,为了实现这一点,一般使用多线程机制来处理,对每一个客户端连接通讯,服务器端都有一个线程专门负责处理(相当于一个服务员专门服务一个以IP地址和端口号唯一标识的客户)。

上述方式两个聊天者之间通信必须通过服务器进行转发,聊天者多时,显然服务器是个性能瓶颈。

能不能聊天者之间直接通信当然可以,这是所谓的P2P 聊天室,缺点是对聊天者缺乏集中监管的手段。

也有界于二者之间的,即有一服务器,接受注册和登录,实际聊天双方通信时,仍然是直接通信,此时服务器相当于一个婚姻介绍所,只管牵线搭桥,具体谈还是聊天者自己的事。

本文主要采用聊天信息通过服务器转发的方式,而且只支持一个聊天室。

因为其他典型系统如电子邮件系统,FTP系统均采用类似结构,WEB服务系统本质上也是C/S系统,只不过其客户端是浏览器,采用了HTTP通信协议和HTML,所以变成了B/S结构,可以认为是C/S的一个具体应用,其机理是相似的。

需求分析2.2.1功能需求分析系统的主要功能已在业务分析中有所介绍,在这里需要对每个功能从使用者角度作较为具体的分析。

很明显,整个系统的功能可以自然地分为客户端和服务器端。

以下是主要用例描述一客户端1 . 注册(1)客户启动程序,显示出登陆界面(2)客户选择其中的注册按钮,系统显示注册界面(3)客户填写用户名、密码、确认密码、性别、年龄、电子邮件,按确定按钮(4)系统验证密码和确认密码是否相符、用户名(不能重复)、电子邮件格式、年龄(大于10小于100)(5)系统发送上述信息及“注册请求”到服务端,等待服务端返回“注册成功”消息(6)系统提示注册成功(7)系统返回登陆界面若验证失败,提示“重新输入”若服务端返回“注册失败”,提示“注册失败”若服务端返回“注册失败用户名重名”,则提示“注册失败用户重名”。

2. 登录(1)客户启动程序,显示出登陆界面(2)客户填写用户名、密码,服务器IP地址,按登陆按钮(3)系统验证用户名、密码,不能为空、密码字符长度为6-10(4)系统发送用户名、密码及“登陆请求”到服务端,等待服务端返回“登录成功”消息(5)若成功系统显示客户端主界面(收发消息界面)若用户名、密码验证失败,系统提示;“用户名或密码错”,重复3次若仍不能通过验证则客户端程序退出。

若服务端返回“登录失败”,系统提示“用户名或密码错”。

3. 发送信息(1)在客户端主界面,用户输入消息,选择是群发还是私聊,若是私聊还要选择对方用户名,按发送按钮(2)系统验证消息长度, 私聊要求目的方用户名非空。

(3)系统发送信息及“接收消息请求”到服务器端,等待服务端返回“接收成功”消息(等待返回消息可省)。

(4)系统提示信息已发送若发送不成功,则系统提示“发送失败”。

4. 接收信息(1)客户端系统启动,进入主界面后,会显示消息接收框(2)其他客户或服务端系统本身发送消息过来,系统接收,分析确认是”接收消息请求“,则分析提取出消息(3) 在消息接收框逐条显示发送者姓名、发送的消息。

5 退出(1)用户请求退出,按退出按钮(2)系统确认用户退出(对话框)(3)系统发“退出请求”到服务端,等待服务端返回“退出成功”(等待返回消息可省)(4)客户端系统关闭连接,程序退出二服务器端1. 用户注册(1)系统启动后,等待客户请求(2)客户请求到,接受请求,分析确认是“注册请求”(3)系统读取信息,分析并再次验证用户名、密码、确认密码、性别、年龄、电子邮件。

(4)系统根据用户名,在已有客户记录中查询,确认没有重名(5)系统将用户名、密码、确认密码、性别、年龄、电子邮件信息保存(6)系统向客户端发送“注册成功”消息(7)系统在监控界面上写信息:xx客户名已注册注册时间若重名,向客户端发“注册重名”消息若注册失败,向客户端发“注册失败”消息2. 用户登录(1)系统启动后,等待客户请求(2)客户请求到,接受请求,分析确认是“登录请求”(3)系统读取信息,验证用户名、密码是否存在(4)系统验证是否已经登录(5)系统验证用户是否已超过最大用户数(6)系统将客户加入聊天室,通知其它客户“新用户加入”(7)系统向客户端发送“登录成功”消息(8)系统在监控界面上写信息:客户名:已登录登录时间若验证失败,向客户端发“验证失败”消息3. 发送信息(用于管理员向聊天者发送公告信息)(1)系统启动后,等待管理员请求(2)管理员在监控界面输入消息,确定发送类型(群发还是私聊),若私聊还需指定目的用户名,按发送按钮(3)系统读取信息,分析并确认是群发还是私聊(4)若是群发,则将信息发给聊天室内其它所有用户;若是私聊,则将消息发给指定的用户。

(5)系统在监控界面上写信息:管理员--〉消息若出现异常,提示“发送失败”。

4 接收信息(1)系统启动后,等待客户请求(2)客户请求到,接受请求,分析确认是“接收信息请求”(3)系统读取信息,分析并确认是群发还是私聊(4)若是群发,则将信息发给聊天室内其它所有用户(5)系统向客户端发送“接收成功”消息(可省)(6)系统在监控界面上写信息:xx客户名--〉消息群发/私聊若出现异常,向客户端发“接收失败”消息(可省)5用户退出(1)系统启动后,等待客户请求(2)客户请求到,接受请求,分析确认是“用户退出请求”(3)系统从聊天室删除客户,并通知其它用户“客户退出”(4)系统向客户端发“退出成功”(可省),关闭连接。

聊天系统主要应用在局域网,在性能方面要求,客户到客户间消息传输时间不大于5s,传输可靠性要求95%的情况下,消息可以可靠传到目的地,同时在线用户数量不小于200。

友情提示:本需求分析只是分析了主要的用户使用情况,在对客户端进行分析时,聊天者是一个接口,服务方也是一个接口,在对服务端进行分析时,客户端是一个接口,服务方管理员是另一个接口。

在接口处只关心接口处的输入输出,并不关心接口里面是如何实现的。

例如客户端登陆用例分析时,客户发“登录请求”信息到服务端,此时只需关注服务方返回情况,所以只需等待获取服务端返回信息,而无需知道服务方是如何处理的。

服务方如何处理是在服务端登录用例中描述的。

隐含需求的发现。

在登录用例中,客户和服务方都有登录用例,合作完成一个完整的登录过程,密码和用户名的验证一般都能想到,但限制用户数量,同一用户不能重复登录则不太容易想到,这里经验就会起作用,这是第一步,想到了就要向客户提出(必要时解释),具体要不要做由客户决定,则是第二步。

这里还有一个度的把握,因为不可能任何情况都要向客户解释。

经验如何来学习前人的经验并运用到自己的项目开发中,体会转化为自己的东西应该是个有效途径。

优先级的划分。

作为聊天系统,其主要功能就是聊天,客户间互相发送消息,所以优先级最高的是客户端的发送、接收、退出用例,服务器端的接收、退出用例。

注册、登录用例次之。

而公告、踢人、保存日志及聊天记录、个性化界面等又次之。

优先级划分后,设计实现时,先做优先级高的,例如本系统,为了实现上述全部功能,可以分3次迭代,第一次,实现高优先级的基本聊天功能,第二次实现注册和登录,第三次实现公告、踢人、保存日志及聊天记录等。

相关文档
最新文档