简易聊天应用程序的设计与实现

上传人:汽*** 文档编号:576220878 上传时间:2024-08-19 格式:PDF 页数:17 大小:1.67MB
返回 下载 相关 举报
简易聊天应用程序的设计与实现_第1页
第1页 / 共17页
简易聊天应用程序的设计与实现_第2页
第2页 / 共17页
简易聊天应用程序的设计与实现_第3页
第3页 / 共17页
简易聊天应用程序的设计与实现_第4页
第4页 / 共17页
简易聊天应用程序的设计与实现_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《简易聊天应用程序的设计与实现》由会员分享,可在线阅读,更多相关《简易聊天应用程序的设计与实现(17页珍藏版)》请在金锄头文库上搜索。

1、 简易聊天应用程序的设计与实现 The Standardization Office was revised on the afternoon of December 13, 2020 Java 网络程序设计大作业分组报名表 项目名称 简易聊天应用程序的设计与实现 项目功能 网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一聊天室的人们通过广播消息进行实时交谈。运用 java程序编写聊天室,实现简单的聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。程序实现了聊天室的基本功能,其中有: 1.启动服务器。 2.启动登陆界面。 3.进入客户端界面。 4.发送信息。 5.离

2、开客户端界面。 6.关闭服务器。 团队成员 姓名 性别 年级 院、系、专业 学号 备注 计算机科学与技术 计算机科学与技术 计算机科学与技术 计算机科学与技术 指导教师 姓名 研究 方向 软件设计 职称 团队 联系 方式 联系人 姓名 联系电话 邮件 地址 邮编 目 录 一、团队介绍及人员分工 . 错误!未定义书签。 团队介绍 . 错误!未定义书签。 人员分工 . 错误!未定义书签。 二、作品概述 . 错误!未定义书签。 创作背景 . 错误!未定义书签。 功能概要 . 错误!未定义书签。 相关技术 . 错误!未定义书签。 作品可行性分析 . 错误!未定义书签。 三、需求分析 . 错误!未定义书

3、签。 功能性需求 . 错误!未定义书签。 非功能性需求 . 错误!未定义书签。 四、作品实现 . 错误!未定义书签。 服务端界面实现 . 错误!未定义书签。 客户端界面实现 . 错误!未定义书签。 登录实现 . 错误!未定义书签。 聊天功能实现 . 错误!未定义书签。 退出功能实现 . 错误!未定义书签。 五、作品设计、实现难点分析 . 错误!未定义书签。 难点分析 . 错误!未定义书签。 解决方案 . 错误!未定义书签。 测试结果 . 错误!未定义书签。 一、团队介绍及人员分工 团队介绍 吴益帆:有良好的统筹能力和领导力,能合理安排各组员工作。 张咪:踏实耐心,有良好的创新能力和策划能力。

4、沈丹丹:勤奋刻苦、有钻研精神,对待编程工作热情细心,孜孜不倦。 吴晓晓:对待工作细致专注,设计能力较强。 团队成员之间有较好的默契度及协作性。分工明确,各司其职,在共同的努力及相互的配合下,共同解决程序中出现的困难并尽可能的优化程序,最终完成整个项目。 人员分工 吴益帆:负责程序最后的整理,完成部分功能及错误的处理。 张咪:负责程序的编码部分及项目具体功能的实现。 沈丹丹:负责程序的界面部分,为改程序搜索解决的方案。 吴晓晓:负责程序的策划部分,项目的可行性分析及文档的编写工作。 二、作品概述 创作背景 网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一聊天室的人们通过广播消息

5、进行实时交谈。 在当今信息时代,越来越多的聊天工具被应用,java 语言是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用java 语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承,锻炼我们熟练地应用面向对象的思想和设计方法解决实际问题的能力。 功能概要 运用 java程序编写聊天室,实现简单的聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了包,包等。程序实现了聊天室的基本功能,其中有: (1) 服务

6、器端功能描述: 启动服务器端:点击“开启”按钮,启动服务; 端口服务:输入服务器的某个端口号,开启服务器的这个端口; 显示在线用户信息:在右边的用户列表显示所有在线的用户信息; 显示用户聊天信息:在左边的聊天信息区域内显示所有用户所发的信息; 服务端关闭:点击“关闭按钮,关闭服务。 (2) 客户端功能描述: 启动客户端:运行客户端程序,启动客户端; 选择服务器端口号:输入想要连接的服务器的端口号; 用户登录:填入用户名,点击“登录”按钮,连接相应服务器; 显示在线用户:在右边的用户列表中可以看到当前在线的用户; 发送/接受聊天消息:在下面的文本输入区域输入要发送的内容,点击发送可以在左边的聊天

7、信息区域内显示自己以及其他用户所发的信息; 用户离线:点击“离线”按钮,与服务器断开连接; 客户端关闭:关闭客户端图形用户界面,关闭客户端。 相关技术 (1) Java 概述 JAVA 语言有下面一些特点:简单、面向对象、分布式、解释执行、鲁棒、 安全、体系结构中立、可移植、高性能、多线程以及动态性。 丰富的类库 JAVA 提供了大量的类以满足网络化、多线程、面向对象系统的需要。语言包提供的支持包括字符串处理、多线程处理、数学函数处理等,可以用它简单地实现 JAVA 程序的运行平台。实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。输入输出包用统一的流模型来实现所有格式的I/O,包

8、括文件系统、网络、输入低级网络包用于实现Socket 编程。抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件, 包括窗口、菜单、滚动条、对话框等,使得 JAVA 可以移植到不同平台的机器。网络包支持Internet 的TCP/IP 协议,提供了与 Internet 的接口。它支持 URL 连接,WWW 的即时访问,并且简化了用户/服务器模型的程序设计。 (2) 套接字 Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。 具体的说:一个服务器应用程序一

9、般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个 Socket 建立连接,客户端通过写Socket 来通知服务器,以读 Socket 中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个 Socket,通过读写和客户端通信。 Socket 程序的工作过程: 1.建立 Socket 连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接道。 2.数据通信:利用虚拟连接通道传送数据信息进行通信。 3.关闭:通信结束时,再将所

10、建的虚拟连接拆除。 作品可行性分析 由于本软件知识一个聊天程序,程序只提供用户之间的聊天功能,故对网络传输数据要求不是很高,只要正常的传输速度就可以了。 三、需求分析 功能性需求 本聊天室分为聊天室服务端和聊天室客户端,服务端与客户端之间通过套接字 Socket(TCP)连接。在 java 中使用套接字相当简单,Java API 为处理套接口的通信提供了一个类使得编写网络应用程序相对容易服务器采用多线程以满足多用户的请求,并通过创建一个 ServerSocket 对象来监听来自客户的连接请求,默认IP地址为:localhost默认端口为8888。 (1) 聊天室服务端模块,包括端口服务、启动服

11、务、关闭服务、显示在线用户、显示用户聊天信息,如图所示; 图聊天室服务端模块图 端口服务:输入要侦听的端口,默认为 8888; 启动服务:启动服务器,并开始在设置的端口中侦听,客户端用户可以登录并开始聊天; 关闭服务:关闭服务器,侦听结束。客户端用户不能再聊天; 显示在线用户:服务器列表显示在线用户数和所有在线用户名称; 显示用户聊天信息:在文本区中显示所有用户聊天信息和登录、退出信息。 (2) 聊天室客户端模块,包括用户登录、用户离线、连接设置、发送和接收聊天信息、显示在线用户、退出,如图所示: 图聊天室客户端模块图 用户登录:只能在聊天室服务端已开启的情况下,用户点击“按钮”才能登录,用户

12、登录之后才能开始聊天,登录后不能再修改用户设置和连接设置; 用户离线:用户点击“离线”按钮,退出聊天,与服务器断开连接; 连接设置:用户可以设置自己连接的服务器的 IP 地址和端口号,默认的连接地址为:localhost:8888; 发送和接收聊天信息:用户可以给所有人发送信息,并能看到其他用户发送给所有人的消息; 显示在线用户:服务器列表显示在线用户数和所有在线用户名称; 退出:关闭所有聊天并退出客户端。 (3) 程序流程:首先启动服务器,用户打开客户端,输入服务器端口号,再输入用户名就可以登录,登录以后会显示当前在线的用户信息,用户可以看到其他用户所发的信息,自己也可以发送信息。用户点击离

13、线就会与服务器断开连接,最后关闭服务器,如图所示: 启动服务输入服务器端口号用户登录开始聊天离线服务器关闭 图程序流程图 非功能性需求 (1) 安全需求 本程序能防卫禁止未登录用户进行通信,防止数据丢失,需要输入用户名、端口号连接相应的服务器才允许用户间的通信。 (2) 性能需求 本程序使用的对象是所有运行该程序的用户,用户在连接服务器可以进行客户端之间的通信。 (3) 易用性需求 本程序的使用对象计算机水平一般,有一定的易用性上的要求,程序应当存在着一些友好性的提示,提高程序的友好度。 (4) 可维护性需求 本程序能够及时发现并纠正系统故障,对系统数据进行备份,有系统还原功能。 (5) 健壮

14、性需求 本程序在遭遇非法输入数据,能够排除该数据并继续运行;对于系统异常有完备的预警预防处理机制。 四、作品实现 服务端界面实现 在服务端启动后,要显示“简易聊天室服务器”的图形用户界面,如图所示: 图 服务端图形用户界面 “简易聊天室服务器”的图形用户界面实现的主要代码如下: private Label svrIP = new Label(服务器IP:); private TextField showSvrIP = new TextField(); private Label svrPort = new Label(服务器端口:); private TextField getSvrPort

15、= new TextField(8888); private Button enter = new Button(启动); private TextArea output = new TextArea(); private Label user = new Label(当前在线用户(0); private List list = new List(); private void setup() Panel top = new Panel(); (new FlowLayout(); (svrIP); (bg); (showSvrIP); (bg); (svrPort); (bg); (getSv

16、rPort); (bg); (enter); (bg); Panel east = new Panel(); (new BorderLayout(); (North, user); (bg); (Center, list); (bg); setLayout(new BorderLayout(); add(North, top); (bg); add(East, east); (bg); add(Center, output); (bg); setBackground(bg); 点击“启动”按钮,开启默认的服务器8888端口,如图所示: 图 服务端端口开启 8888 端口开启实现代码如下: tr

17、y server = new ServerSocket(getSvrPort .getText(); rightNow = ().getTime() .toLocaleString(); (rightNow + n开启服务器.nn); (关闭); ht = new Hashtable(); ht_s = new Hashtable(); st = new ServerThread(); serving = true; catch (IOException ioe) (Error: + ioe + nn); 客户端界面实现 在客户端启动后,显示“简易聊天室客户端”的图形用户界面,如图所示: 图

18、客户端图形用户界面 “简易聊天室客户端”的图形用户界面实现的主要代码如下: private Button B_login = new Button(登陆); private Button B_logout = new Button(离线); private Button B_send = new Button(发送); private Label userName = new Label(您的用户名:); private TextField getUserName = new TextField(); etTime().toLocaleString(); (rightNow + n登录失败请使

19、用合法用户名.nn); if (accepted) rightNow = ().getTime().toLocaleString(); (rightNow + n您已成功登陆.nn); login = true; 图 服务端显示用户 服务端向在线用户发送当前在线用户列表代码实现如下: login = true; (userName); (User ( + () + ); String str = (); line = A ; etTime().toLocaleString(); (rightNow + n + userName + 登陆.nn); 客户端获取当前在线用户列表代码实现如下: St

20、ring str = ( ); for (int i = 1; i ; i+) (stri); (当前在线用户( + () + ); 聊天功能实现 开启多个客户端,并登录。在输入框中输入信息,点击“发送”,数据传送至服务端(如图所示),再由服务端数据发送给其他客户端。每个客户端都接收服务端发送过来的数据,并显示在消息框中,如图所示。 图 服务端显示消息 用户发送消息代码实现如下: private void sendMsg() if (!login) return; try if ().equals() (n发送内容不能为空请重新输入nn); return; (M + (); (); catch

21、 (IOException ioe) (Error: + ioe + nn); 图 客户端端显示消息 退出功能实现 当用户点击“离线”,该用户的客户端显示“您已成功离线”,其他用户的客户端显示“wxx离线” (如图所示);服务端显示“wxx离线”(如图所示)。 图 客户端离线 图 服务端显示用户离线 离线实现代码如下: private void Quit() if (!login) return; try (Q); (当前在线用户 (0); catch (IOException ioe) (Error: + ioe + nn); 如果用户直接关闭客户端窗口,服务端则显示“客户端 zm 意外关闭

22、”,如图所示: 图 服务端显示用户意外关闭 客户端意外关闭实现代码如下: catch (SocketException se) (userName); (connection); (userName); (客户端 + userName + 意外关闭n); 五、作品设计、实现难点分析 难点分析 一个项目的开发过程并不总是一帆风顺的,其中难免会遇到困难,使编程无法继续下去。本程序的难点在于对通信机制的了解以及实现,同时窗口之间的通讯也需要认真分析。 解决方案 针对程序设计过程中遇到的困难,我们采取了积极有效的解决方法:团队讨论、上网搜索及向有经验的人员请教。查看了大量相关资料,最终经过反复的调试及测试,解决了上述的难点,实现了服务器与客户端的通信。 测试结果 程序在 Eclipse中运行测试,能实现预期的功能,项目完工!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号