文档详情

聊天室java课设.doc

发布:2018-01-17约1.08万字共18页下载文档
文本预览下载声明
java C/S 聊天服务器软件系统 1课程设计的目的 在网络飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。为了适应网络大潮,方便各级部门与上级部门的联系及数据汇报,特构建聊天系统。Java能够快速有效的解决这些问题,此系统能实现信息交互以及信息保存等功能。程序设计语言Java实现Servet多线程及其同步问题,设计和完成了一个完全基于浏览器和Web服务的聊天服务系统。 2设计方案论证 2.1开发环境 Java聊天室系统的开发环境为Eclipse3.2.1, Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言; 2.2概要设计 2.2.1服务器端的任务 (1)服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。 (2)服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。 2.2.2客户端应该完成的工作 (1)与服务器端建立通信通道,向服务器端发送信息。 (2)接收来自服务器的信息。 (3)服务器端的侦听。由于服务器端要和多个客户端同时进行通信,那么系统的部分肯定必须用多个线程来完成,一旦服务器发现一个新的客户端与之建立了连接,就马上建立一个线程与该客户端进行通信。 完成了服务器端的第一个的任务,那么第二个任务也就不难解决了。上面已经为每一个连接着的客户端建立了一个线程,这个线程好比一根电话线一直等待客户端说话,而信息发送中心就相当于一个总台,一旦有人打电话进来,就通过电话线把信息传送到总台,再由总台根据需要将这个信息发送给接收群。 2.3总体设计 这样,一个Server-Client结构的聊天系统的核心就完成了,当然这只是一个最简单的框架,要进一步完善的话还要进一步考虑很多问题,例如:客户端发送的信息应该分为公用以及私有的信息,然后SendMessageCenter根据信息的类别来判断应该将信息发送给哪些用户。 拥有权限的客户端可以动态地建立聊天频道,然后SendMessageCenter还可以判断信息所属的聊天频道来决定向谁发送信息客户端可以执行聊天命令,例如返回当前服务器的在线信息,返回某个用户的相关信息,退出聊天系统等等。 所有这些问题都可以通过Client与Server类的SendMessageCenter方法建立一个不很复杂的通信协议来完成。一个通信协议就是一组约定,将相关的信息制定一个格式标准,让接收方和发送方都知道这条信息将作为什么身份进行通信。例如,发送方发送的信息为普通的聊天信息时,可以增加一个前缀:words = [chatmessage] + words,而发送一条要求返回在线名单的信息时,可以发送另一个前缀 words=[returnonlinelist]。当SendMessageCenter接收到客户端信息时,首先判断message的前缀,如果是[chatmessage],则传送给其他客户端,如果是[returnonlinelist],则返回给该客户端一个OnlineList。 3设计结果与分析 3.1聊天室服务端 程序运行时,首先启动服务端,运行结果如下图: 图1 服务端窗口 服务端主程序代码如下: 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;//服务端Socket Image icon;//程序图标 JComboBox combobox;//选择发送消息的接受者 JTextArea messageShow;//服务端的信息显示 JScrollPane messageScrollPane;//信息显示的滚动条 JTextField showStatus;//显示用户连接
显示全部
相似文档