Java大作业文档.doc_第1页
Java大作业文档.doc_第2页
Java大作业文档.doc_第3页
Java大作业文档.doc_第4页
Java大作业文档.doc_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

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

文档简介

聊天室一、引言本文围绕Java编程语言在网络编程方面的具体应用,论述了使用面向对象方法,对计算器程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。在编程我们使用的java语言,是目前比较流行的编程语言。在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。二、需求分析2.1 开发背景:在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个局域网的网络聊天工具的;而且通过制作该程序还能更好的学习网络软件编程知识.2.2 功能要求:i. 寻找服务器登录ii. 注册帐号iii. 能够实现点对点单聊iv. 能够实现群聊v. 能动态更新在线用户列表vi. 文件传输三、系统设计3.1 设计思想整个系统分为服务器和客户端,服务器端维护各个客户端的信息。客户端的所有信息发往服务器端,再由服务器进行消息的分析处理并做出相应的控制,服务器端是所有信息的中心。服务器端可以查看所有用户的聊天记录,监控所有用户的状态,发出用户上线、离线提示等公告,客户端则提供接收公告的功能。本课程设计按照系统的具体功能要求,首先应用Socket编程创建客户端和服务器端,每多个客户端服务器端就会相因的创建一个线程,它们之间通过这个连接来实现数据通信;然后在客户端设置一个监听器,用于监听服务器发来的消息。并根据消息做出不同的动作。3.2系统功能该系统实现了用户之间的点对点单人聊天,在线用户之间的群聊。为了加强之间的信息交流,还实现了用户之间文件传输、语音聊天。在客户端和服务器端都可以查看历史消息、保存消息、清空消息。为了监控用户之间的状态,服务器还可以实现踢掉用户的功能,同时用户时间文件传输的信息都会在服务器上显示。3.3系统架构1)选择传输控制协议TCP,使用Java的Socket编程机制,分别建立客户端与服务器端、语音传输使用的是UDP控制协议;2)分别设计客户端与服务器端的界面,并使用Java应用程序用户界面的开发工具包Swing进行窗体界面的布局,以及实现部分窗口事件的相应。3.4 模块设计3.4.1 服务器端:主要实现向各个客户端发布系统消息,接受来自客户端的各种信息并分别处理。具体功能如下:连接控制:包括启动服务器、断开服务器以及断开某个客户端的连接;管理作用:包括对参与聊天者的昵称进行修改以及向所有或某个客户端发送消息,维护一个IP地址和昵称所对应的哈希表,以便定位到正确的客户端,且有权强制修改用户昵称;刷新列表:在有用户登陆或离开的时候实时更新列表,并将信息反馈到各个客户端;登陆信息:检查用户是否已登陆,如登录,发消息通知所有用户。同时刷新在线用户列表;聊天记录:能保存聊天记录,实现消息的保存、清空以及查看等功能;消息处理:解析客户端与服务器端的消息交互类型,并做出相应处理,能够找到消息所对应的接收端。3.4.2 客户端:主要实现向服务器端发布消息,并且对来自服务器的消息做出相应的响应。具体功能如下:连接功能:输入服务器地址,实现登录及断开功能登录设置:登录时,发送消息使服务器端获得相关登录信息,昵称及IP地址记录到服务器端维持的哈希表,断开后发送消息使IP地址及昵称从哈希表中删除;监听作用:实现对服务器发送过来的消息进行监听的功能;消息处理:接收由服务器端发送来的信息,并做出相应的响应;聊天记录:实现聊天记录的保存、清空以及查看等功能;消息处理:相应从服务器端接收到的消息交互类型,实现用户与用户之间的信息交互和文件交互;四、详细设计与实现4.1 服务器端4.1.1 服务器该段功能由Server.java文件中的Server类实现,具体实现过程如下:启动服务并接收连接:服务器的任务首先是建立一个由IP地址到昵称的映射的哈希表,用于存放用户的基本信息;启动服务器后,等候建立一个连接,然后用这个连接产生的Socket创建一个Client,同时检查该用户是否已存在哈希表中,若以存在,则提示该次连接请求失败,从而实现限制IP的目的;若不存在,则将该IP地址及其昵称或默认昵称的映射添加到哈希表中,接着服务器端向所有的用户发送管理信息,提示有新的用户登录,并且将刷新后的用户列表同时发送到各个客户端。关闭服务:服务器端遍历哈希表,关掉每一个用户对应的Socket,之后,关闭服务Server。管理作用之发送消息: 服务器端解析由客户端发送的请求,若控制字以“SPECIAL”开头,则通过控制字后的昵称从哈希表中找到对应的用户,实现服务器端到客户端的点对点消息交互;若不是以“SPECIAL”开头,则实现消息的广播发布。管理作用之修改昵称:首先判断新的昵称是否在哈希表中存在,若已存在则给出错误提示,否则通过该用户的旧昵称在哈希表中查找到该用户,并用欲修改的昵称替换掉原昵称;接着刷新服务器端的用户列表显示,最后刷新客户端的用户列表显示。管理作用之断开连接:若要断开某个客户端与服务器的连接,首先向该用户发送被管理员请出系统的信息,然后通过该用户的昵称从哈希表中找到对应socket、service及IP地址等信息,再从每一项信息对应的列表里删除该用户的信息,最后关闭该用户的socket,同时刷新服务器端以及各个客户端的用户列表显示。在服务其中,需要同时处理多个客户端的请求,因此此处用到了多线程处理机制。在服务器程序里创建单个Server Socket,并调用accept()来等候一个新连接,一旦accept()返回,就取得结果获得的socket,并用它新建一个线程,令其只为那个特定的客户端服务,然后再调用accept(),等候下一次新的连接请求。4.1.2 界面设计该段功能由ServerFrame.java文件中的ServerFrame类实现,具体实现过程如下:窗口布局:服务器端窗口使用了BorderLayout事务管理器,把整个容器分成了五个区域:North、South、East、West和Center,每个区域放置一个面板,每个面板又分别使用不同的事务管理器放置其他组件,如按钮、标签、文本框等,各个组将构成了一个完整的服务器端界面。事件处理:通过Java的授权事件模型,针对组件send、Button1Button8,通过addXXXListener(主要运用了addActionListener)方法注册监听器,并且实现ActionListener接口中的actionPerformed方法,这样,当组件触发了相应类型的事件后,此事件就会被传送给已注册的监听器,事件监听器负责处理事件。至此,实现了窗口对以下几个事件的响应:发送消息、保存消息、清空消息、查看历史消息、启动服务、关闭服务、断开连接、修改昵称。五、运行结果5.1 客户端登陆5.2客户端注册5.2客户端与客服端私聊5.2群聊5.3客户端保存记录文件5.4时钟5.5清屏5.7字体选择六、结论与总结6.1 课程设计结论通过4.3运行结果,可以看出,该课程设计利用Java应用程序Socket编程实现了以下功能:使用Java的多线程处理机制建立两个套接字分别作为服务器端和客户端。在服务器端实现了向各个客户端发布系统消息,接受来自客户端的各种信息并分别处理的功能,可以控制客户端的连接以及对用户的管理作用,并且能够适时检测已登录用户的连接状态且刷新在线用户列表,更能够解析客户端与服务器端的消息交互并做出相应处理。在客户端实现了向服务器端发布消息,并且对来自服务器的消息做出相应的响应,可以连接到特定的服务器,设置自己的昵称,并且能够监听服务器端发送过来的消息并做出相应的响应,更加能够与其他用户进行广播或私聊,以及实现文件传输,语音聊天等功能。由此,可见,本次课程设计完成了最初的设计要求,即实现了类似P2P的QQ聊天系统,有相应的客户端和服务器端;服务器端可以记录当前在线客户列表,把客户列表发送给每一个在线客户,并实时刷新;任何一个用户都可以和任意其它的用户进行交互,即从在线客户列表中选择一个或一组其它用户通过服务器的转发彼此进行信息的交互以及文件的交互。6.2 课程设计总结与体会这个程序代码并不多,也不复杂,但程序编写中用到了JAVA中的Swing组件,面板容器,事件处理,线程的创建、同步,输入输出处理,内部类,异常处理,和网络通信的知识,所以我还是很有收获的。在这次的课程设计中,我也用到了Socket 类和ServerSocket类,明白了它们是Java实现Socket通信的主要工具。创建 ServerSocket对象就创建了一个监听服务,创建一个Socket对

温馨提示

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

评论

0/150

提交评论