java课程设计报告(java聊天室)

合集下载

一种基于Java技术的聊天室系统的设计与实现

一种基于Java技术的聊天室系统的设计与实现
维普资讯

种基于 Jv 技术的聊天室系统的设计与实现 aa
胡少 峰 , 赵 克 , 春 霞 耿
707 ) 1 0 1 ( 安 电子 科 技 大 学 研 究 生 院 , 安 西 西
摘 要 : 章 简 要 介 绍 了 J P ( a a S r e a e 文 S J v e v r P g )以 及 J C ( a a aa a e DB J v D tb s
J E E B等 。J v 2 E、 J a a技 术 从 推 出 至 今 仅 几 年
的时 问 , 以其 完 全 的 面 向对 象 风 格 , 作 平 就 操
台 的无 关 性 、 全性 、 安 健壮 性 、 移 植 性 、 可 中性 等 优 点 , 受 国 内外 软 件 开 发 人 员 的 欢 迎 。 深
We b应 用 的 一 般 过 程 为 : 置 好 We 设 b服 务
0 引 言
Jv a a技 术 是 由 美 国 S n公 司 倡 导 和 推 u 出 的 。 a a技 术 包括 J v Jv a a语 言 和 J v da a aMe i
A PI 、J v Ap lt a a s aa p e 、J v Ap l a i n、J v p i to c aa
RM I J v a s J P、 a a S r l t J 、 a a Be n 、 S J v e ve 、 DBC、
器 ; 发 J v pe 开 a a Ap lt或 C in piain l t Ap l t e c o 作为 客户 端程 序, 轻 服 务器 的负担 ; 减 用 J P、a aB a s J v e ve 、 J 等 构 建 在 S J v e n 、a aS r lt E B 服 务 器 端 运 行 的 服 务 程 序 ; 最 底 层 设 计 良 在 好 的 数 据 库 系 统 ; 户 以 HTTP 或 者 RM I 客

本科毕业论文-基于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聊天室的设计与实现毕业设计开题报告精选全文

精选全文完整版(可编辑修改)毕业设计开题报告2017年3月1日毕业设计开题报告1.结合毕业设计情况,根据所查阅的文献资料,撰写2000字左右的文献综述:文献综述研究背景及意义随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式已经难以满足人们的交流的需求了,网络聊天已经慢慢成为人们生活的一部分,呈现出良好的势头和广阔的发展前景。

在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。

作为通讯的一种运用的聊天软件,它继承了通讯软件的优点,它具有文字聊天、语音聊天、传送文件、拨打电话、远程协助、视频聊天、邮件辅助、发送短信、浏览咨询等等功能。

开发基于桌面的,面向个人的大众化聊天软件,可以满足网民在网络交流的需要,和电话、手机有着异曲同工之妙,但较之电话和手机,聊天软件具有方便快捷,功能强大,交流成本低等优点,因此受到广大个人用户的喜爱,网络聊天已经成为网络生活中不可或缺的一部分。

网上聊天软件是为人们相互进行交流和联系提供的一个平台,通过提供完善的网上聊天服务,可以达到增进彼此之间的了解,增加人与人之间的感情交流的目的。

同时,即时通信系统对现代企业也有着重大意义,由于聊天程序可以加装到台式机、笔记本电脑、手机等终端上,并且具有通讯、文件传输、视频音频会议等诸多强大的能力,能够有效地降低企业内部的通讯费用,提高工作效率。

越来越多的企业已开始认识到即时通信工具能够带来极高的生产力,并借助它的应用,来提高业务协同性及反馈的敏感度和快捷度。

随着不断地发展现如今聊天软件的开发技术已经比较成熟,各项功能也已日渐完善,聊天程序已不仅仅只是为了聊天,现阶段已获成功的聊天软件都早已将发展中心往建设平台方面发展,以后聊天软件更多承担的角色是一款能够产生价值的巨型航母。

本题目为基于socket的网络编程,具体需要实现C/S模式的聊天程序,使用了java 语言,java语言有下面一些特点:简单、面向对象、分布式、解释执行、安全、体系结构中立、可移植、高性能、多线程以及动态性。

java实训聊天系统报告总结

java实训聊天系统报告总结

java实训聊天系统报告总结一、项目背景随着互联网的快速发展,人们在日常生活和工作中越来越依赖于网络。

在线聊天成为了人们日常交流的重要方式。

为了满足不同用户对聊天系统的需求,本次实训项目选择开发一款功能完善的Java聊天系统。

二、项目目标1. 设计一款用户界面友好,操作简单的聊天系统。

2. 实现用户的注册和登录功能,保障系统的安全性。

3. 提供实时聊天功能,用户可以通过系统进行文字、图片的交流。

4. 支持多人群聊、私聊的功能。

5. 实现聊天记录的存储和查看。

三、系统架构1. 前端设计本次项目的前端开发使用Java的Swing库进行界面设计,保障用户操作的友好性和系统的易用性。

2. 后端开发后端使用Java语言进行开发,使用Socket实现实时通讯功能,使用MySQL进行用户数据的存储和管理。

四、功能实现1. 用户注册和登录功能用户可以通过系统注册新账号,并使用已有账号进行登录。

系统会对用户输入的信息进行验证,保障系统的安全性。

2. 实时聊天用户可以通过系统进行实时的文字、图片交流,确保用户之间的沟通顺畅和效率。

3. 多人群聊、私聊功能系统支持多人同时进行群聊,同时也支持用户进行私聊。

用户可以根据自己的需求选择不同的聊天方式。

4. 聊天记录存储和查看系统会将用户的聊天记录进行存储,并提供查看功能,用户可以随时查看自己的聊天记录。

3. 数据库设计设计数据库存储用户的基本信息、聊天记录等数据,确保数据的安全性和完整性。

4. 功能实现实现用户注册、登录、实时聊天、群聊、私聊等功能,并保障系统的稳定性和安全性。

六、总结本次实训项目成功设计并开发了一款功能完善的Java聊天系统,满足了用户对聊天系统的基本需求。

通过本次项目的实训,加深了我们对Java语言、数据库设计和网络通讯的理解和实践能力,为我们以后的开发工作积累了丰富的经验。

七、展望在今后的工作中,我们还可以进一步完善系统功能,例如增加语音、视频通话功能,优化系统的性能和用户体验,使系统更加满足用户的需求。

基于Java Socket的聊天室系统设计与实现

基于Java Socket的聊天室系统设计与实现
Absr c : n o o k ti ewo k p o r mmig it ra e T i a e nto u e h c a im t a t Wi d ws S c e sa n t r r g a n ne fc . h sp p ri r d c d t e me h n s
户端根据输入 Sr r I e e 的 P地址连入相应的服务器参与聊天活动, v 服务器上显示当前在线的用户信
息 , 对用户进 入或 断开 的信 息加 以显示。 并 关键词 :aa 接 字 ; Jv 套 聊天 室 ; 户端 ; 客 服务器
D I 码 : .9 9 ii n 1 0 2 7 .0 0 0 . 1 O编 1 3 6 /.s . 0 2— 2 9 2 1 .5 0 9 0 s
中图分 类号 :P 9 T 33
文献标识 码 : A
文章编号 :0 2— 2 9 2 1 )5— 0 6— 2 10 2 7 (0 0 O 0 6 0
De in & I lme to a y t m a e n J v c e sg mpe n fCh tS se B s d o a a So k t
ci t o n c dwt cm a besr r n ie h tn codn eI f e e i ut .nte l n cn et i o p t l ev dj ndcat gacri t t Po r r n t d I h e e h i ea o i goh sv p e
H ig j g L a g h n U J — i ,U M n — og n n
( u a io i l n l t m ca i l o t h i, h nsa4 0 2 ,hn ) H n nBo gc dEe r eh n a le n C a gh 1 16 C i l aa co c P yc c a

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多线程的聊天室程序
的 网络 通信 链 接 实 现 数据 交 换 。即 服 务 器 和客 户 端 的应 用 程 序 各 有 一 个 S c e ,这 两个 S c e 把 服 务 器 和客 户 端 的程 序 连 接 okt okt 起 来 并 交换 数 据 。 ( )多线 程 :因 为 一 个 服 务 器 要 连 人 多 个 客 户 端 ,要 让 服 2 务 器 程 序 同时 为 多 个 客 户 服 务 , 就 需 要 为 每 个 客 户 端 开 辟 一
Bu f r dR a e b = n w Bu f r - fe e e d r r e fe e
d e d rn w n u S r a R a e (e Ip t te mRe d r e lp t te mO) a e ( g tn u S r a ) s ;
中 ,首 先 定 义 一 个 S reS c e, 并 指 明 端 口号 ,这 样 服 务 器 ev ro k t


t i. l n s = c in s h sc i t e l t; e
3 程序 实现
31 服 务 器 端 。
建 一个 类 ,名 称 为 C atev r h r re ,代 表 服 务 器 程 序 。 在 该 类 S
p bi v i u ) u l od rn({ c ty{ r
建立 好 之 后 .每 个 客 户端 的发 言 都 发 送 给 服 务 器 ,服 务 器 接 收 后 再 转 发 给所 有 连 入 的 客户 端 ,这 样 每 个 客 户 端就 都 能 收 到 其 他 客户 发 出 的信 息 了 。这 就 是 C S结 构 聊 天 室 的工 作 原 理 ,其 / 实现 主 要使 用 如 下 两 种技 术 :
p bi S re T ra S c e s Se l n s{ u l e v r he d(o k tsHa h tci t) c e

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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章。

《JAVA程序设计》课程设计五篇

《JAVA程序设计》课程设计五篇

《JAVA程序设计》课程设计五篇第一篇:《JAVA程序设计》课程设计JAVA程序设计》课程设计------Chatter即时聊天工具班级:姓名:学号:指导老师:日期:《目录1.引言.....................................................................................3 2.功能简介..............................................................................3 3.开发环境..............................................................................3 4.课程设计目的.......................................................................3 5.使用手册..............................................................................3 6.程序源代码...........................................................................4 4.1 serverJFrame.java (4)4.2 clientJFrame.java...............................................................9 7.程序运行效果图. (14)8.心得体会 (16)1.引言相信大家一想到基于TCP/IP协议的通信,都会想到利用Socket 类对象建立一条可靠的连接,这样就客户机/服务器就在这条连接上可靠地传输数据。

利用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对象。

javaweb课设报告

javaweb课设报告

洛阳理工学院课程设计报告课程名称Java web程序开发入门专业计算机应用技术_班级_学号_姓名完成日期_目录第一总体设计 (4)1.1、设计目的: (4)1.2设计题目: (4)1.3。

设计要求: (4)第二设计内容: (5)2.1 题目一 (5)2.1.1Tomcat服务器启动 (5)2。

1。

2下载安装JDK (6)2.1.3下载Eclipse安装包 (7)2。

2题目二 (8)2.2。

1分析 (8)2。

2。

2用户注册设计思想 (9)2.2。

3用户注册功能实现 (9)2。

3题目三 (15)2。

3。

1聊天室设计思想 (15)2。

3.2聊天室模块划分 (15)2。

3。

3系统功能结构图 (16)2。

3。

4 chatroom的模块设计分析 (16)2.3。

5ChatRoom 的关键技术 (16)2.3。

6 代码设计 (17)2.3。

7 聊天室功能实现 (20)2。

4题目四 (21)2。

4。

1开发环境: (21)2.4。

2 系统分析: (21)2。

4。

3功能实现: (23)第三实训心得 (24)第一总体设计1.1、设计目的:1、培养学生运用所学课程《Web程序设计(Java)》的理论知识和技能解决实际问题的能力,使学生在系统开发中得到Java Web编程方法及技能的综合训练。

2、培养学生调查研究、查阅技术文献以及编写技术报告的能力。

1.2设计题目:1.下载并安装JDK、Tomcat、MySQL和Eclipse,完成Java Web应用程序开发环境的搭建。

2.使用JSP Model2模型,开发一个用户注册模块,要求:使用Servlet、JSP和Java Bean技术;界面友好;具有用户输入校验功能,并且在用户输入错误时给出出错信息。

3.使用JSP和JavaScript技术实现一个网络聊天室,功能要求具备一个使用用户昵称登录的页面,在聊天主窗口左侧有当时在线成员列表(建议采用AJAX技术),通过鼠标可以选择说话的对象(不允许自己对自己说话),在聊天时可以设置说话时表情,输入说话的内容,单击发送按钮完成会话的发送,会话内容实时显示在聊天主窗口内,包括发言人姓名、聊天对象姓名、聊天内容和会话发起的时间,选作的功能是将会话内容保存在数据库中。

java课程设计报告

java课程设计报告

java课程设计报告
最近,随着Java技术的快速发展,Java课程设计在计算机领域中的重要性正在越来越明显。

在大学里,Java课程设计任务也日益复杂。

本文以Java课程设计报告为例,通过简要介绍后,分析java 课程设计的实施过程和报告内容,以及注意事项及其优势等内容,全面介绍Java课程设计报告的写作。

首先,Java课程设计报告是对学习者在Java课程设计任务过程中,实际实施情况的汇总,总结和反思。

它是学习者实际实施和学习的结果,以及对于任务的分析和反思的总结报告,是java课程设计实施情况的重要体现。

其次,Java课程设计报告的写作过程可以分为以下几个部分:
1、实施阶段:该阶段是提出问题、调查问题、分析问题和设计方案,实施运行方案,及时发现问题,并及时进行调整预测等;
2、报告内容:该部分内容包括任务概述、实施过程、系统分析、系统设计详情、开发技术等。

3、注意事项:写作应不断修改和审阅,尤其是关于表达、措辞的修改,使其文字更加通顺流畅;文中应提供加以证明的有效数据,同时,文章的架构要安排得当,使文章的结构清晰。

最后,Java课程设计报告的优势是:一是针对特定领域的问题,可以解决学习者所遇到的技术问题;二是通过Java课程设计报告,可以反映学习者实际实施任务的过程;三是可以提高大学生技术实践能力,更多地体会计算机技术的有效应用。

总之,Java课程设计报告是一种重要的计算机课程设计任务,它不仅有助于更好地体验计算机技术的实际应用,而且能够帮助学生掌握编程技术,培养实践能力。

因此,精心准备设计的Java课程设计报告,仍是一项有益的学习任务。

java网络聊天室课程设计报告(内附代码)

java网络聊天室课程设计报告(内附代码)

课程设计网络聊天室院(系) 别信电学院班级计算102学号姓名指导教师时间2013-4-18—2013-5-10 课程设计任务书题目网络聊天室课程设计系(部) 信电学院专业计算机科学与技术班级计算102学生姓名学号4 月18 日至5 月10 日共 4 周指导教师(签字)系主任(签字)年月日成绩评定表目录课程设计概述 (3)1.1问题描述 (3)1.2功能需求分析 (3)1.3环境需求分析 (3)学生信息管理系统软件总体设计 (4)2.1整体思路 (4)2.2总体设计流程图 (5)学生信息管理软件详细设计 (6)3.1.界面设计 (6)3.2通信功能实现方法 (8)参考文献 (44)摘要私達の実践の能力を高めるため、学んだ知識を運用することができて行って更に創造して、学校は特に2週間手配して、私達にVisual C++の課程の設計の実習を行わせます.このファイルの詳しい説明はVisual C++6.0環境の下で、1つのソフトウェアの過程を設計して、このソフトウェアは各種のデータの個数を統計したのです。

このソフトウェアの機能は、ユーザーは1段の文字を入力して、ソフトウェアは文字の中の各類のデータの数を記録して、英文のデータの数、数字のデータの数、空欄のデータの数とそれのタイプのデータの数を含んで、そしてそれらを明らかに示します.以下、課程を通して説明を設計して、データはソフトウェアの説明を統計して、プログラムは説明を調整して、総括などの方面を開発して、詳しくこのプログラムの製作の過程を説明して、作用、各種の実行することができる操作.关键字:データの統計,VC++6.0, ヘッドファイル课程设计概述1.1问题描述`随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。

因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。

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。

JAVAWEB制作简易聊天室1

JAVAWEB制作简易聊天室1

三 程序源码: 登录页面 index.jsp,就是先进行一下初始化,然后重定向到主页面 ChatRoom.jsp,代码如下:<%@page import="java.util.*"%> <% ArrayList al_say=new ArrayList(); //创建 ArrayList 数组 application.setAttribute("say",al_say); response.sendRedirect("ChatRoom.jsp"); %>主聊天页面 ChatRoom.jsp 有两部分:form 表单用于输入提交聊天信息;另一部分用于显示聊 天内容。

<%@page contentType="text/html;charset=GBK"%> <%@page import="java.util.*"%> <form method=post action="say.jsp"> <input type="text" name="say"> <input type="submit" value="提交"> <input type="reset" value="重置"> </form> <hr /> <% ArrayList al_say=new ArrayList(); al_say=(ArrayList)application.getAttribute("say"); for (int says=0;says<al_say.size();says++) { %> <%=al_say.get(says)%><br /> <% } // %> 聊天信息处理页面 say.jsp 实现接收提交的聊天信息,放到 application 中,供主聊天页面 ChatRoom.jsp 显示聊天内容<%@page contentType="text/html;charset=GBK"%> <%@page import="java.util.*"%> <% String say=new String (request.getParameter("say").getBytes("iso-8859-1")); ArrayList al_say=new ArrayList(); al_say=(ArrayList)application.getAttribute("say"); al_say.add(say);response.sendRedirect("ChatRoom.jsp"); //张老师 %>。

(完整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)。

Java聊天室课程设计一、需求分析1.1开发背景在信息化社会的今天,网络飞速发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似MSN、QQ,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的想法,且通过制作该程序还能更好的学习网络软件编程知识。

网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。

网编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。

在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。

而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。

目前较为流行的网络编程模型是客户机/服务器(C/S)结构。

即通信双方一方作为服务器等待客户提出请求并予以响应。

客户则在需要服务时向服务器提出申请。

服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也得到响应的服务。

1.2设计要求本课程设计的目标是利用套接字socket()设计一个聊天程序,该程序基于C/S模式,客户机器向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。

1.3设计目的通过设计一个网络聊天程序,对套接字、数据报通讯、URL、与URLConnectiom的相关知识有详细的了解和充分的认识。

能将相关的只是运用到相关的实践中去。

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

服务器的主要功能有1)在特定端口上进行侦听,等待客户连接2)用户可以配置服务器的真挺端口3)向已经连接服务器的客户发送系统消息4)统计在线人数5)当停止服务时,断开所有用户的连接客户端的主要功能1)连接到已经开启聊天服务的服务端2)用户可以配置要连接服务器端的ip地址和端口号3)用户可以配置连接后显示的用户名4)当服务器开启时。

用户可以随时登陆和注销5)用户可以向所有人或一个人发送消息二、总体设计2.1设计思想套接字对象在网络编程中扮演者重要的角色,可以用套接字技术编写一个聊天室,服务器为每个客户启动一个线程。

在该线程中通过套接字和客户交流信息,当客户向服务器发送一条聊天信息“大家好”时,服务器要让所有的这些线程中的输入流写入信息大家好,这样所有的客户的套接字的输入流就都读取到了这一条信息。

如果把信息“你好”发送给特定用户,服务器就让特定线程中的输出流写入信息“你好”,那么只有特定客户的套机字的输入流可以读取到这条信息。

在聊天室中需要对用户上线下线的状态进行修改,进而统计在线人数、查找某用户等。

因而需要用到java链表来实现。

由于Java语言不像c或c++一样可以利用线性表的链式存储结构,用节点和指针来表示,在Java中是没有指针的,但是可以通过使用对象的引用来实现链表。

链表的结点个数称为链表的长度。

因此在Java中可以定义两个类来实现链表的操作,分别为节点类和链表类。

在本设计中对用户的存储就是利用链表来实现的。

2.2基本设计概念和处理流程本系统运行用JA V A开发,采用C\S结构,系统分为客服端和服务端两大模块,使用Socket 类建立套接字实现客服端和服务端得通讯。

处理流程服务端客户端一个ServerSocket对象和一个Socket对象一个Socketd对象TCP Socket通信流程2.3总体结构2.4功能分配客户端服务端2.5接口设计2.5.1用户接口提供一个用户操作界面:包括用户可以再界面中登录聊天室、输入消息、浏览聊天内容和聊天对象。

同时提供一个服务器操作界面,通过服务器操作界面可以修改服务器的配置,知道用户的当前状态,并可以给用户发送指定系统信息。

2.5.2内部接口Socket(string hont ,int port );客户端使用Socket类建立与服务器的套接字连接。

ServerSocket(int port);建立接收客户的套接字的服务器套接字。

2.6主要模块2.6.1聊天室服务器端模块聊天室服务器端模块主要有以下几部分组成1、主框架类(ChatServer.java)该文件包含名为ChatServer的public类,其主要功能是定义服务器的界面,添加事件侦听鱼事件处理。

ChatServer类调用ServerListen类来实现服务端用户上线与下线的侦听,调用ServerReceive类来实现服务器端消息的转发。

2、服务器用户上线与下线侦听类。

该类对用户上线与下线的侦听是通过调用用户链表类来实现的,当用户的上线与下线情况发生改变时,该类会对主类的界面进行相应的修改。

3、服务器消息收发类该类分别定义了向某用户及向所有人发送消息的方法,发送的消息会显示在主界面类的界面上。

4用户修改配置的类。

该类继承自JDialog。

使用户对服务器端口进行修改配置的类。

5节点类定义了链表中的用户6链表类该类通过构造函数构造用户链表,定义了添加用户、删除用户、返回用户数、根据用户名查找用户和各根据索引查找用户等方法。

7服务器帮助类、2.6.2聊天室服务器端模块算法描述服务器端的ChatServer类继承自JFrame并实现相应的事件监听接口,因此它定义了服务器的主框架,及各个按钮的事件监听。

它分别调用ServerListen类来实现服务端用户上线与下线的侦听,调用ServerReceive类来实现服务器端消息的转发。

同时服务器可以响应多个客户的请求,当一个客户发送请求时,服务器就为它增加一个线程,同时服务器利用UserLinkList类为客户端设置一个请求队列,如果服务器不能马上响应客户端的请求,就要把这个请求放到请求队列在中,,等服务器将当前的请求处理完,会自动到请求队列中按照先后顺序取出请求进行处理。

2.6.3聊天室客户端模块客户端主要有以下几个文件,功能如下:1客户端主框架类该类主要定义客户端的界面,添加事件侦听与事件处理。

该类定义了与服务器实现连接与断开连接的方法。

当用户登录到指定的服务器上时,该类条用客户端实现消息收发的类实现消息的收发。

同时该类定义了向所有用户发送消息的方法。

2客户端消息收发的类该类实现了服务器与客户端消息的收发3用户修改配置的类该类继承自JDialog,是用户对要连接的服务器IP及侦听端口进行修改配置的类。

4帮助类客户端用户程序的帮助类2.6.4聊天室客户端模块主要算法描述客户端ChatClient类继承了JFrame并实现相应的事件监听接口。

它实现了客户端的主界面及相应按钮的事件侦听。

该类调用ClientReceive类实现消息的收发。

同时该类定义了向所有用户发送消息的方法。

通过相应的输入输出流与服务器进行数据的传递与交流。

三、主要代码实现3.1服务器主要代码实现1、Chatserver类:包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加事件侦听与事件处理。

调用ServerListen类来实现服务端用户上线与下线的侦听,调用ServerReceive类来实现服务器端的消息的收发。

import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import .*;import java.io.*;/** 聊天服务端的主框架类*/public class ChatServer extends JFrame implements ActionListener{public static int port = 8888;//服务端的侦听端口ServerSocket serverSocket;//服务端SocketImage icon;//程序图标JComboBox combobox;//选择发送消息的接受者JTextArea messageShow;//服务端的信息显示JScrollPane messageScrollPane;//信息显示的滚动条JTextField showStatus;//显示用户连接状态JLabel sendToLabel,messageLabel;JTextField sysMessage;//服务端消息的发送JButton sysMessageButton;//服务端消息的发送按钮UserLinkList userLinkList;//用户链表//建立菜单栏JMenuBar jMenuBar = new JMenuBar();//建立菜单组JMenu serviceMenu = new JMenu ("服务(V)");//建立菜单项JMenuItem portItem = new JMenuItem ("端口设置(P)");JMenuItem startItem = new JMenuItem ("启动服务(S)");JMenuItem stopItem=new JMenuItem ("停止服务(T)");JMenuItem exitItem=new JMenuItem ("退出(X)");JMenu helpMenu=new JMenu ("帮助(H)");JMenuItem helpItem=new JMenuItem ("帮助(H)");//建立工具栏JToolBar toolBar = new JToolBar();//建立工具栏中的按钮组件JButton portSet;//启动服务端侦听JButton startServer;//启动服务端侦听JButton stopServer;//关闭服务端侦听JButton exitButton;//退出按钮//框架的大小Dimension faceSize = new Dimension(400, 600);ServerListen listenThread;JPanel downPanel ;GridBagLayout girdBag;GridBagConstraints girdBagCon;/*** 服务端构造函数*/public ChatServer(){init();//初始化程序//添加框架的关闭事件处理this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.pack();//设置框架的大小this.setSize(faceSize);//设置运行时窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation( (int) (screenSize.width - faceSize.getWidth()) / 2,(int) (screenSize.height - faceSize.getHeight()) / 2);this.setResizable(false);this.setTitle("聊天室服务端"); //设置标题//程序图标icon = getImage("icon.gif");this.setIconImage(icon); //设置程序图标show();//为服务菜单栏设置热键'V'serviceMenu.setMnemonic('V');//为端口设置快捷键为ctrl+pportItem.setMnemonic ('P');portItem.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));//为启动服务快捷键为ctrl+sstartItem.setMnemonic ('S');startItem.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));//为端口设置快捷键为ctrl+TstopItem.setMnemonic ('T');stopItem.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK));//为退出设置快捷键为ctrl+xexitItem.setMnemonic ('X');exitItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_X,InputEvent.CTRL_MASK));//为帮助菜单栏设置热键'H'helpMenu.setMnemonic('H');//为帮助设置快捷键为ctrl+phelpItem.setMnemonic ('H');helpItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_H,InputEvent.CTRL_MASK));}/*** 程序初始化函数*/public void init(){Container contentPane = getContentPane();contentPane.setLayout(new BorderLayout());//添加菜单栏serviceMenu.add (portItem);serviceMenu.add (startItem);serviceMenu.add (stopItem);serviceMenu.add (exitItem);jMenuBar.add (serviceMenu);helpMenu.add (helpItem);jMenuBar.add (helpMenu);setJMenuBar (jMenuBar);//初始化按钮portSet = new JButton("端口设置");startServer = new JButton("启动服务");stopServer = new JButton("停止服务" );exitButton = new JButton("退出" );//将按钮添加到工具栏toolBar.add(portSet);toolBar.addSeparator();//添加分隔栏toolBar.add(startServer);toolBar.add(stopServer);toolBar.addSeparator();//添加分隔栏toolBar.add(exitButton);contentPane.add(toolBar,BorderLayout.NORTH);//初始时,令停止服务按钮不可用stopServer.setEnabled(false);stopItem .setEnabled(false);//为菜单栏添加事件监听portItem.addActionListener(this);startItem.addActionListener(this);stopItem.addActionListener(this);exitItem.addActionListener(this);helpItem.addActionListener(this);//添加按钮的事件侦听portSet.addActionListener(this);startServer.addActionListener(this);stopServer.addActionListener(this);exitButton.addActionListener(this);combobox = new JComboBox();combobox.insertItemAt("所有人",0);combobox.setSelectedIndex(0);messageShow = new JTextArea();messageShow.setEditable(false);//添加滚动条messageScrollPane = new JScrollPane(messageShow,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); messageScrollPane.setPreferredSize(new Dimension(400,400)); messageScrollPane.revalidate();showStatus = new JTextField(35);showStatus.setEditable(false)sysMessage = new JTextField(24);sysMessage.setEnabled(false);sysMessageButton = new JButton();sysMessageButton.setText("发送");//添加系统消息的事件侦听sysMessage.addActionListener(this);sysMessageButton.addActionListener(this);sendToLabel = new JLabel("发送至:");messageLabel = new JLabel("发送消息:");downPanel = new JPanel();girdBag = new GridBagLayout();downPanel.setLayout(girdBag);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 0;girdBagCon.gridwidth = 3;girdBagCon.gridheight = 2;girdBagCon.ipadx = 5;girdBagCon.ipady = 5;JLabel none = new JLabel(" ");girdBag.setConstraints(none,girdBagCon);downPanel.add(none);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 2;girdBagCon.insets = new Insets(1,0,0,0);girdBagCon.ipadx = 5;girdBagCon.ipady = 5;girdBag.setConstraints(sendToLabel,girdBagCon); downPanel.add(sendToLabel);girdBagCon = new GridBagConstraints();girdBagCon.gridx =1;girdBagCon.gridy = 2;girdBagCon.anchor = GridBagConstraints.LINE_START; girdBag.setConstraints(combobox,girdBagCon); downPanel.add(combobox);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 3;girdBag.setConstraints(messageLabel,girdBagCon); downPanel.add(messageLabel);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 1;girdBagCon.gridy = 3;girdBag.setConstraints(sysMessage,girdBagCon); downPanel.add(sysMessage);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 2;girdBagCon.gridy = 3;girdBag.setConstraints(sysMessageButton,girdBagCon); downPanel.add(sysMessageButton);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 4;girdBagCon.gridwidth = 3;girdBag.setConstraints(showStatus,girdBagCon); downPanel.add(showStatus);contentPane.add(messageScrollPane,BorderLayout.CENTER); contentPane.add(downPanel,BorderLayout.SOUTH);//关闭程序时的操作this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){stopService();System.exit(0);}}}}/*** 事件处理*/public void actionPerformed(ActionEvent e) {Object obj = e.getSource();if (obj == startServer || obj == startItem) { //启动服务端startService();}else if (obj == stopServer || obj == stopItem) { //停止服务端int j=JOptionPane.showConfirmDialog(this,"真的停止服务吗?","停止服务",JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j == JOptionPane.YES_OPTION){stopService();}}else if (obj == portSet || obj == portItem) { //端口设置//调出端口设置的对话框PortConf portConf = new PortConf(this);portConf.show();}else if (obj == exitButton || obj == exitItem) { //退出程序int j=JOptionPane.showConfirmDialog(this,"真的要退出吗?","退出",JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j == JOptionPane.YES_OPTION){stopService();System.exit(0);}}else if (obj == helpItem) { //菜单栏中的帮助//调出帮助对话框Help helpDialog = new Help(this);helpDialog.show();}else if (obj == sysMessage || obj == sysMessageButton) { //发送系统消息sendSystemMessage();}}/*** 启动服务端*/public void startService(){try{serverSocket = new ServerSocket(port,10);messageShow.append("服务端已经启动,在"+port+"端口侦听...\n");startServer.setEnabled(false);startItem.setEnabled(false);portSet.setEnabled(false);portItem.setEnabled(false);stopServer .setEnabled(true);stopItem .setEnabled(true);sysMessage.setEnabled(true);}catch (Exception e){//System.out.println(e);}userLinkList = new UserLinkList();listenThread = new ServerListen(serverSocket,combobox,messageShow,showStatus,userLinkList);listenThread.start();}/*** 关闭服务端*/public void stopService(){try{//向所有人发送服务器关闭的消息sendStopToAll();listenThread.isStop = true;serverSocket.close();int count = userLinkList.getCount();int i =0;while( i < count){Node node = userLinkList.findUser(i);node.input .close();node.output.close();node.socket.close();i ++;}stopServer .setEnabled(false);stopItem .setEnabled(false);startServer.setEnabled(true);startItem.setEnabled(true);portSet.setEnabled(true);portItem.setEnabled(true);sysMessage.setEnabled(false);messageShow.append("服务端已经关闭\n");combobox.removeAllItems();combobox.addItem("所有人");}catch(Exception e){//System.out.println(e);}}/*** 向所有人发送服务器关闭的消息*/public void sendStopToAll(){int count = userLinkList.getCount();int i = 0;while(i < count){Node node = userLinkList.findUser(i);if(node == null) {i ++;continue;}try{node.output.writeObject("服务关闭");node.output.flush();}catch (Exception e){//System.out.println("$$$"+e);}i++;}}/*** 向所有人发送消息*/public void sendMsgToAll(String msg){int count = userLinkList.getCount();//用户总数int i = 0;while(i < count){Node node = userLinkList.findUser(i);if(node == null) {i ++;continue;}try{node.output.writeObject("系统信息");node.output.flush();node.output.writeObject(msg);node.output.flush();}catch (Exception e){//System.out.println("@@@"+e);}i++;}sysMessage.setText("");}/*** 向客户端用户发送消息*/public void sendSystemMessage(){String toSomebody = combobox.getSelectedItem().toString();String message = sysMessage.getText() + "\n";messageShow.append(message);//向所有人发送消息if(toSomebody.equalsIgnoreCase("所有人")){sendMsgToAll(message);}else{//向某个用户发送消息Node node = userLinkList.findUser(toSomebody);try{node.output.writeObject("系统信息");node.output.flush();node.output.writeObject(message);node.output.flush();}catch(Exception e){//System.out.println(""+e);}sysMessage.setText("");//将发送消息栏的消息清空}/*** 通过给定的文件名获得图像*/Image getImage(String filename) {URLClassLoader urlLoader = (URLClassLoader)this.getClass().getClassLoader();URL url = null;Image image = null;url = urlLoader.findResource(filename);image = Toolkit.getDefaultToolkit().getImage(url);MediaTracker mediatracker = new MediaTracker(this);try {mediatracker.addImage(image, 0);mediatracker.waitForID(0);}catch (InterruptedException _ex) {image = null;}if (mediatracker.isErrorID(0)) {image = null;}return image;}public static void main(String[] args) {ChatServer app = new ChatServer();}}(2)ServerListen.java:该类实现服务端用户上线与下线的侦听。

相关文档
最新文档