版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。局域网聊天系统设计报告题目局域网聊天系统班级:学号:姓名:完成时间:年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需求分析 寻找服务器登陆能够实现点对点单聊能够实现文件传输能动态更新在线用户列表该系统实现了用户之间的点对点单人聊天。为了加强之间的信息交流,还实现了用户之间文件传输,文件共享。在客户端和服务器端都能够查看历史消息、保存消息、清空消息。为了监控用户之间的状态,服务器实时刷新在线用户列表,同时用户时间文件传输的信息都会在服务器上显示。第二章系统设计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-0000: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.数据库连接publicclassDBOperator{ privatestaticConnectionconn; privateDBOperator(){} publicstaticsynchronizedConnectiongetConnectionInstance(){ if(conn==null){ conn=getConnection(); } returnconn; }…2.客户端与服务器通信NetTalkprivatestaticNetTalktalk=null;privateSocketclient=null;privateDataOutputStreamdos=null;privateDataInputStreamdis=null;privateNetTalk(){…}publicstaticNetTalkgetTalkInstance(){…}publicStringreadMsg(){…}publicvoidwriteMsg(Stringmsg){…}客户端用户登录功能实现publicclassLoginController{ publicTextFieldaccount; publicPasswordFieldpassword; publicButtonLoginButton; publicHyperlinkregister; publicvoidonClick(){ Stringaccount=this.account.getText(); Stringpassword=this.password.getText();// interrorCode=UserService.register(account,password); interrorCode=UserService.login(account,password); if(errorCode==0){ //登录成功,跳转到主界面 UserService.currentAccount=account; Main.goMainUI(); }elseif(errorCode==1){ //提示:网络连接超时 }elseif(errorCode==2){ //提示:密码或账号不对 } }2.群体聊天功能实现elseif(result.startsWith("public")){ finalString[]msg=result.split(":"); //Stagestage=UserService.chatUI.get("public"); //if(stage==null){ //stage=Main.goPublicUI(); //UserService.chatUI.put("public",stage); //} Platform.runLater(newRunnable(){ publicvoidrun(){ //把消息放到public聊天窗口 BaseControllerstage=UserService.chatUI.get("public");if(stage==null){ stage=Main.goPublicUI(); UserService.chatUI.put("public",stage); stage.stage.setOnCloseRequest(newEventHandler<WindowEvent>(){ @Override publicvoidhandle(WindowEventevent){ //TODOAuto-generatedmethodstub UserService.chatUI.remove("public
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年版:供应链管理服务合同
- 2024年特种门采购合同范本3篇
- 2024年某企业关于知识产权许可的合同
- 马鞍山职业技术学院《安装工程计量计价实训》2023-2024学年第一学期期末试卷
- 2024年文化产业融资借款合同范本大全6篇
- 2025年货运从业资格证模拟试题题库及答案解析
- 2025年货运从业资格证考试题目和答案
- 2025年昆明考货运从业资格证考试题目
- 2024事业单位聘用合同教师(附教育质量监控与管理)3篇
- 2025建筑工程民工劳动合同范文
- TBSES 001-2024 建设项目环境影响后评价技术指南 污染影响类
- 《财务会计学(第14版)》课后参考答案 戴德明
- 2024年中考道德与法治时政热点复习:新质生产力(含练习题及答案)
- 小学语文项目化学习活动的设计
- 国开《Windows网络操作系统管理》形考任务5-配置DNS服务实训
- 人教版(PEP)英语四年级上册《Unit 1 My classroom》单元教学设计 1
- 人教版三年级上册音乐《第一单元唱歌 快乐的do re mi 》说课稿
- 职业院校“金课”建设方案
- 施工进度计划分析
- 青海省2024年中考化学真题【附真题答案】
- 中央2024年应急管理部宣传教育中心招聘笔试历年典型考题及考点附答案解析
评论
0/150
提交评论