局域网聊天系统设计报告.doc_第1页
局域网聊天系统设计报告.doc_第2页
局域网聊天系统设计报告.doc_第3页
局域网聊天系统设计报告.doc_第4页
局域网聊天系统设计报告.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

局域网聊天系统设计报告题 目 局域网聊天系统 班 级: 学 号: 姓 名: 完成时间: 2015 年 10 月目 录第一章 引言21.1开发背景21.2需求分析2第二章 系统设计32.1 功能设计32.2 系统架构52.3 模块设计.32.4 流程(或算法)设计52.5 类与接口设计5第三章 系统实现73.1 管理子系统7第四章设计总结10参考文献10附 录(核心代码)11局域网聊天系统第一章 引言 本文围绕Java编程语言在网络编程方面的具体应用,论述了使用面向对象方法,对局域网聊天程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。在编程我们使用的java语言,是目前比较流行的编程语言。在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。1.1开发背景随着互联网的发展,人们对网络的依赖越来越大,越来越离不开网络,网络聊天工具作为一种交流工具,已经受到网民的青睐。目前,出现了很多功能强大的聊天工具,其中应用比较广泛的有腾讯QQ、MSN-Messager等等。即时通讯软件,是每一个上网用户都需要的工具,它除了能够让您迅速地在网上找到自己的朋友和伙伴之外,还可以实时交谈和传递信息,截止到目前,全球约有近3亿多人使用即时软件,正因为即时通讯软件拥有数以亿计的用户和增长的市场,所以各个公司都盯上了这个最大的市场,一时间,即时通讯市场硝烟四起。而且通过制作该程序还能更好的学习网络软件编程知识。1.2需求分析i. 寻找服务器登陆ii. 能够实现点对点单聊iii. 能够实现文件传输iv. 能动态更新在线用户列表该系统实现了用户之间的点对点单人聊天。为了加强之间的信息交流,还实现了用户之间文件传输,文件共享。在客户端和服务器端都可以查看历史消息、保存消息、清空消息。为了监控用户之间的状态,服务器实时刷新在线用户列表,同时用户时间文件传输的信息都会在服务器上显示。第二章 系统设计2.1 功能设计整个系统分为服务器和客户端,服务器端维护各个客户端的信息。客户端的所有信息发往服务器端,再由服务器进行消息的分析处理并做出相应的控制,服务器端是所有信息的中心。服务器端可以查看所有用户的聊天记录,监控所有用户的状态,发出用户上线、离线提示等公告,客户端则提供接收公告的功能。本课程设计按照系统的具体功能要求,首先应用Socket编程创建客户端和服务器端,每多个客户端服务器端就会相因的创建一个线程,它们之间通过这个连接来实现数据通信;然后在客户端设置一个监听器,用于监听服务器发来的消息。并根据消息做出不同的动作。2.2系统架构(1)选择传输控制协议TCP,使用Java的Socket编程机制,分别建立客户端与服务器端使用的是UDP控制协议;(2)分别设计客户端与服务器端的界面,并使用Java应用程序用户界面的开发工具包Swing进行窗体界面的布局,以及实现部分窗口事件的相应。2.3 模块设计(1)服务器端主要实现向各个客户端发布系统消息,接受来自客户端的各种信息并分别处理。具体功能如下:连接控制:包括启动服务器、断开服务器以及断开某个客户端的连接;管理作用:包括对参与聊天者的昵称进行修改以及向所有或某个客户端发送消息,维护一个IP地址和昵称所对应的哈希表,以便定位到正确的客户端,且有权强制修改用户昵称;刷新列表:在有用户登陆或离开的时候实时更新列表,并将信息反馈到各个客户端;登陆信息:检查用户是否已登陆,如登录,发消息通知所有用户。同时刷新在线用户列表;聊天记录:能保存聊天记录,实现消息的保存、清空以及查看等功能;消息处理:解析客户端与服务器端的消息交互类型,并做出相应处理,能够找到消息所对应的接收端。服务器端结构如图1: 服务器连接控制消息处理聊天记录登录信息刷新列表管理作用 图1 服务器端结构(2)客户端 主要实现向服务器端发布消息,并且对来自服务器的消息做出相应的响应。具体功能如下:连接功能:输入服务器地址,实现登录及断开功能登录设置:登录时,发送消息使服务器端获得相关登录信息,昵称及IP地址记录到服务器端维持的哈希表,断开后发送消息使IP地址及昵称从哈希表中删除;监听作用:实现对服务器发送过来的消息进行监听的功能;消息处理:接收由服务器端发送来的信息,并做出相应的响应;相应从服务器端接收到的消息交互类型,实现用户与用户之间的信息交互和文件交互; 客户端结构如图2:客户端连接功能消息处理理聊天记录消息处理监听作用登录设置文件传输 图2 客户端结构2.4 流程(或算法)设计图3 系统功能流程2.5 类与接口设计1.用户注册功能分析用户向服务器发出注册请求,首先建立和服务器的连接,其次注册提交窗体(Register)要进行用户输入判断,若用户提交的账号和密码有一项为空或者全为空,则无法发送提交的账号和密码,然后服务器在数据库中查找用户提交的账号是否已经存在,若存在则向用户发送“1”(账号已存在)的消息,否则发送“0”(注册成功)的消息。2.用户登录功能分析登录用户向服务器发出登录请求,首先建立和服务器的连接,其次登录窗体(Login)要进行用户输入判断,若登录用户输入的账号和密码有一项为空或者全为空,则无法发送登录的账号和密码,然后服务器在用户在线列表中查找登录用户提交的账号是否已经在线上,若已经在线则向登录用户发送“havelogin”(账号account登录失败,用户已经在线)的消息,窗体不跳转,否则服务器在数据库中查找登录用户提交的账号是否已经存在,若不存在则向用户发送“1”(登录失败,用户不存在,请先注册)的消息,窗体不跳转,反之服务器在数据库中查找登录用户提交的账号和密码是否正确匹配,正确则向登录用户发送“0”(登录成功)消息,并将登录用户加入在线用户列表,窗体跳转到AfterLogin窗体,不正确则向登录用户发送“2”(登录失败,密码不正确)消息,窗体不跳转。3.用户群体聊天功能分析在线用户向服务器发出群聊请求(基于跟服务器建立的连接通道)首先群聊窗体(publicChat)要进行当前用户的输入判断,若当前用户输入的消息为空,则无法发送(提醒:请输入非空的语言),然后服务器收到用户发来的群聊消息,并向的所有在线用户转发该用户发来的群聊消息。4.用户私人聊天功能分析 在线用户向服务器发出私人聊天请求(基于跟服务器建立的连接通道),首先私聊窗体(Session)要进行当前用户的输入判断,若当前用户输入的消息为空,则无法发送(提醒:请输入非空的语言),然后服务器收到用户发来的私聊消息,服务器对私聊消息进行解析,并将消息转发给当前用户要进行私聊的在线用户。5. 用户在线列表刷新功能分析 登录用户登录成功以后,会进行窗体跳转,跳转到AfterLogin窗体,在窗体加载的时(基于和服务器的通道),当前用户将上线消息发送给服务器并获取到服务器发来的在线用户列表(保存下来),同时当前用户端要启动一个子线程来接收服务器发来的消息。当用户端子线程读取到服务器发来以“online”开头的消息时(当有用户上线或下线时就会发送一次),子线程能将更新任务打包发送给用户端主线程,进行AfterLogin窗体“联系人”-“在线用户”的修改。6.用户下线通知功能分析当前在线用户进行下线操作以后,服务器会收到用户下线的通知,此时服务器就会将下线的用户从在线用户列表中删除,并向剩下的所有在线用户发送该用户下线消息(剩下的在线用户能接到提示),同时服务器再一次向所有的在线用户发送一次以“online”开头的在线用户列表,则用户端子线程就能将更新任务打包发送给用户端主线程,进行AfterLogin窗体“联系人”-“在线用户”的修改。7.数据库名类型长度十进位是否允许为空是否为主键备注idint110否是自动递增accountvchar200否否passwordvchar200否否questionvchar200是否answervchar200是否e_mailvchar200是否reg_timetimestamp00否否刷新为当前时间last_login_timetimestamp00否否默认为0000-00-00 00:00:00第三章 系统实现3.1 管理子系统图4 登录界面 图5 注册界面图6 在线界面图7 私聊界面图8 群聊界面第四章 设计总结首先,本次课程设计认真学习了/论坛中有关程序,以及参考文献中的书籍中提出的观点。然后进行了系统结构设计,最后进行代码实现。本次课程设计利用Java应用程序Socket编程实现以下功能:使用Java的多线程处理机制建立两个套接字分别作为服务器和客户端。服务器端实现对客户端聊天内容的监听并且接受来自客户端的各种信息请求,可以控制客户端的链接以及对用户的管理作用,并且实时的检测在线用户,对在线用户列表刷新。而且可以为服务器端自动保存消息记录并完成服务器端与客户端的交互。客户端则连接到特定的服务器,实现聊天服务,文件传输,文件共享等功能,并且能够监听服务器发来的消息并进行回应。由此可见本次课程设计完成了最初的设计要求,实现简单的局域网聊天功能。程序编写中用到了JAVA中的Swing组件,面板容器,事件处理,线程的创建、同步,输入输出处理,内部类,异常处理,和网络通信的知识,更深一步的加固了本学期所学知识,收获很多。在这次的课程设计中,我也用到了Socket 类和ServerSocket类,明白了它们是Java实现Socket通信的主要工具。创建 ServerSocket对象就创建了一个监听服务,创建一个Socket对象就建立了一个Client与Srever间的连接。明白了Java语言网络编程的可靠性,平台无关性。总之通过本次课程设计,掌握了使用Java语言进行面向对象设计的基本方法,提高了运用面向对象知识解决实际问题的能力。本次课程设计的不足: 本次课程设计中没有实现语音聊天功能和群聊功能。在以后的学习中定会注意这方面的学习,以得到补充。 附 录(核心代码)(1) 服务器端:1.数据库连接public class DBOperator private static Connection conn;private DBOperator() public static synchronized Connection getConnectionInstance() if (conn = null) conn = getConnection();return conn;2. 客户端与服务器通信NetTalkprivate static NetTalk talk = null;private Socket client = null;private DataOutputStream dos = null;private DataInputStream dis = null;private NetTalk() public static NetTalk getTalkInstance() public String readMsg()public void writeMsg(String msg)(2) 客户端1. 用户登录功能实现public class LoginController public TextField account;public PasswordField password;public Button LoginButton;public Hyperlink register;public void onClick()String account=this.account.getText();String password=this.password.getText();/int errorCode=UserService.register(account, password);int errorCode=UserService.login(account,password);if(errorCode=0)/登录成功,跳转到主界面UserService.currentAccount=account;Main.goMainUI();else if(errorCode=1)/提示:网络连接超时else if(errorCode=2)/提示:密码或账号不对2. 群体聊天功能实现 else if (result.startsWith(public) final String msg = result.split(:); / Stage stage=UserService.chatUI.get(public);/ if(stage=null)/ stage=Main.goPublicUI();/ UserService.chatUI.put(public,stage);/ Platform.runLater(new Runnable() public void run() / 把消息放到public聊天窗口BaseController stage = UserService.chatUI.get(public);if (stage = null) stage = Main.goPublicUI();UserService.chatUI.put(public, stage);stage.stage.setOnCloseRequest(new EventHandler() Overridepublic void handle(WindowEvent event) / TODO Auto-generated method stubUserService.chatUI.remove(public););/UserService.chatUI.pu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论