java聊天系统论文_第1页
java聊天系统论文_第2页
java聊天系统论文_第3页
java聊天系统论文_第4页
java聊天系统论文_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计课程定做 QQ1714879127安 徽 大 学java论文论文题目:聊天系统专 业: 07计算机(1)班 姓 名: 张浩 E10714089 姓 名: 俞勇 E10714079 目 录 一选题依据.1二分析过程.12.1服务器端.12.2客户端12.3使用图形界面设计12.4事件处理22.5多线程设计22.6类的封装2三开发过程.231服务器端.23.1.1设置主窗口及显示形式.23.1.2框架的事件监听器和事件处理器.23.1.3事件处理器模块.23.1.4实现主框架程序中的各子函数.启动服务函数.关闭服务函数.发送消息函数.43.1.5用户结点类和用户链表类.43.1.6端口设置类和帮助对话框类.43.1.7收发消息的类.43.2客户端.53.2.1设置主窗口及显示形式.53.2.2事件监听器和事件处理器.53.2.3事件处理器模块.53.2.4主框架程序中的各子函数.连接函数.断开连接函数.发送消息函数.63.2.5用户设置类.73.2.6连接设置类.73.2.7收发信息类.7四测试过程.84.1设置端口.84.2客户端.84.3登录.94.4聊天.9五.成员分工.11六自我评价.11七. 名词解释.12八.参考文献12【选题依据】Java语言对网络有良好的支持,利用java类库的.net中的方法可以方便的编写网络应用程序。下面将要探讨的是用套接字(socket)实现C/S(client and server)模式的TCP/IP协议下的连接。在网络中可以使用一个或多个客户端和一个服务器端。【分析过程】(1)服务器端:服务器启动后,将一直监听指定的端口。看是否有客户端发来请求。客户端如果要与服务器端建立连接,要向服务器端发送请求,当服务器端接受到客户端发送来的请求后,会创建一个socket对象,用来保存这个客户端的连接,之后继续监听端口。只要有新的客户端建立与服务器的连接,服务器就会创建新的socket对象,来保存与这个客户端的连接(就像客户端第一次与服务器连接,必须在服务器端做一个“登记”,记录下自己的信息)。(2)客户端:当客户端建立与服务器端的连接后,就可以实现聊天的功能了。任何一个客户端发言时,该发言的字符信息会首先传送到服务器,之后服务器会使用循环,将该信息发送到服务器端记录的所有客户端。(3)使用图形界面设计客户端和服务器端。客户端和服务器端的主程序继承javax.swing.jframe生成 对话框,然后利用布局管理器和容器进行嵌套和布局。(4)在各个组件和容器中需要有事件处理的地方,比如关闭对话框,确定和取消等,要事先设置事件监听,和事件处理。(5)由于允许使用多个客户端,所以在各个套接字在接发信息时要用多线程,使接发信息的类继承Tread,实现多线程设计。(6)为了不使客户端和服务器端的程序代码过长,把各个类封装在不同的文件中,并都声明为公共类(public),这样可以在同一个包内访问。【开发过程】服务器端:(1)设置主窗口及显示形式。窗口名为聊天服务器端。设置菜单栏,包含服务和帮助两项。其中,服务中包含端口设置,启动服务,停止服务和退出菜单项。设置工具栏也包含端口设置,启动服务,停止服务和退出。在主窗口设置显示信息显示区域,用jscrollpane设置成可滚动显示区域,总是显示最新信息,且不可编辑。还需要有发送消息的文本编辑框和发送按钮。系统要选择发送给某个用户或者全部用户,所以还需要一个组合框。(2)添加框架的 事件监听器和事件处理器,如关闭框架。在构造函数中,初始化窗口并设置快捷键。初始时,端口设置,启动服务和退出按钮启动,而停止服务菜单项处于禁用状态。为菜单栏里各项和各个按钮添加事件侦听器和事件处理器。(3)由于停止服务和退出等操作都会重用停止服务程序块,所以在主框架的程序中添 加启动服务和停止服务的函数。在事件处理器模块由java.util.EventObject.getSource()方法获取当前事件的事件源。如果事件源是启动服务,则调用启动服务函数启动服务;如果事件源是停止服务则调用停止服务函数停止服务;如果事件源是端口设置,可以新建一个类用以设置端口;如果事件源是退出则调用停止服务函数停止服务,并调用system.exit(0)退出程序;如果事件源是菜单栏中的帮助,则新建一个类用以设置帮助对话框;如果事件源是发送消息按钮,则添加一个发送消息函数,选择向所有人还是向某个人发送系统消息。(4)接着实现主框架程序中的各个子函数。1,启动服务函数时服务器端启动,则需要生成服务器端套接字serversocket。利用构造函数.ServerSocket. ServerSocket(intport, intbacklog),可以设置最大的客户端用户数backlog。在服务器端显示区域显示服务器侦听的端口号,用来提示客户端如果要连接到此服务器端,则必须设置统一的端口号。启动服务时,端口设置和启动服务被禁用,停止服务,退出和发送消息文本框启用。同时,新建一个用以侦听用户上线和下线信息的类,在此类中显示在线用户个数。由于允许多用户,所以让这个类继承java.lang.Thread类。在启动服务函数中创建侦听用户上下线类的对象的同时,启动线程。2,关闭服务时需向所有人发送关闭服务器的消息。添加向所有人发送关闭服务器消息的函数。关闭服务器端套接字。关闭各个客户端的objectinputstream,objectoutputstream和套接字。停止服务和发送消息禁用,启动服务和端口设置启用。在服务器端显示服务器已经关闭,将组合框的项目清空,显示默认的所有人项。3,发送消息函数中有发送给所有人和发送给某个用户两种操作。由javax.swing.JComboBox.getSelectedItem()返回选择发送的对象作为选择进行两种操作的哪一种操作依据。发送的信息由方法java.io.ObjectOutputStream.writeObject(Object arg0)实现。(5)用户结点类用以保存用户信息。其中包含用户名和套接字,还有objectinputstream和objectoutputstream的对象用来保存用户读和写的信息。同时包含一个指向下一个结点的“指针”。用户链表类用以把各个用户连成一个链表,方便遍历操作。其中包含添加用户,删除用户,返回用户数,根据用户名查找用户和根据索引查找用户操作的函数。(6)端口设置对话框类中设置连接的端口号。使其继承javax.swing.JDialog,生成对话框。设置事件监听器监听保存和取消按钮,并在事件处理器中进行相应处理。在帮助类中,也使其生成对话框显示帮助信息,并 设置事件监听器监听确认按钮,且在事件处理器中进行处理。(7)由于收发消息的类要处理与多个用户互动的消息,所以使其继承java.lang.Thread实现多线程设计。如果线程有被服务器端终止而且客户端套接字没有被关闭,那么 就由ObjectInputStream方法的java.io.ObjectInputStream.readObject()来读取客户端写入的信息,并显示在显示区域。由于客户端同样可以选择向所有人发送消息和向某个人发送消息,所以要用java.lang.String.equalsIgnoreCase(String arg0)方法验证客户端选择的是所有人还是某个人,并进行相应的操作。如果java.io.ObjectInputStream.readObject()中的信息是用户下线,则更新组合框用户列表和在线人数,并通知其他用户此用户下线信息。客户端:(1)设置主窗口及显示形式。标题为聊天客户端。设置菜单栏,包含操作,设置和帮助三项。其中,操作中包含用户登录,用户注册和退出菜单项;设置中包含用户设置和连接设置。设置工具栏也包含用户设置,连接设置,登录,注销和退出。在主窗口设置显示信息显示区域,用jscrollpane设置成可滚动显示区域,总是显示最新信息,且不可编辑。还需要有发送消息的文本编辑框和发送按钮。系统要选择发送给某个用户或者全部用户,所以还需要一个组合框。同时添加组合框用以选择发送消息时的表情,并添加悄悄话复选框。(2)添加框架的事件监听器和事件处理器,如关闭框架。在构造函数中,初始化窗口并设置快捷键。初始时,用户设置,连接设置和登录启动,而注销菜单项处于禁用状态。为菜单栏里各项和各个按钮添加事件侦听器和事件处理器。(3)在事件处理器模块由java.util.EventObject.getSource()方法获取当前事件的事件源。如果事件源是用户信息设置,则新建用户信息设置类;如果事件源是连接信息设置,则新建连接信息类设置连接ip和端口号;如果事件源是登录,则添加连接函数;如果事件源是注销,则添加断开连接函数;如果事件源是退出,则调用断开连接函数,并调用system.exit(0)退出程序;如果事件源是菜单栏中的帮助,则新建一个类用以设置帮助对话框;如果事件源是发送消息按钮,则添加一个发送消息函数,选择向所有人还是向某个人发送系统消息。(4)接着实现主框架程序中的各个子函数。1,连接函数连接服务器时需要创建套接字。创建套接字时由构造方法Socket(InetAddressaddress, intport)指定ip和端口号。需要处理异常,在处理异常时弹出对话框显示不能连接到服务器,重新设置连接。用objectoutputstream的对象输出此套接字的输出流的信息。同时用objectinputstream的对象保存此套接字的输入流的信息。创建一个消息收发类用以收发消息。连接服务器时,注销和发送消息文本框被禁用,用户设置,连接设置,登录和退出被启用。2,断开连接函数中,向所有用户发送下线消息,关闭服务器端套接字,关闭客户端的objectinputstream,objectoutputstream和套接字。注销和发送消息文本框被禁用,用户设置,连接设置,登录和退出被启用。在客户端显 示已经与服务器断开连接,将组合框的项目重置,在组合框列表中删除此用户名。3,发送消息函数中由javax.swing.JComboBox.getSelectedItem()返回选择发送的对象和发送 信息时的表情。发送的信息由方法java.io.ObjectOutputStream.writeObject(Object arg0)实现。在输出流中按与客户端的约定格式写入信息:“聊天信息”提示,聊天对象,是否是悄悄话,说话时的表情,信息正文。(5)用户设置类用以输入用户名。使其继承javax.swing.JDialog类,生成对话框输入用户名。为保存,取消按钮和关闭对话框等设置事件监听器及相应的时间处理器。(6)连接设置类用以设置连接的ip和端口号。也使其继承javax.swing.JDialog类,生成对话框输入ip和端口号。为保存,取消按钮和关闭对话框等设置事件监听器及相应的时间处理器。(7)收发信息要保存在自己的套接字中,所以要创建相应的套接字。由于收发消息的类可能要处理与多个用户互动的消息,所以使其继承java.lang.Thread实现多线程设计。如果线程没有被服务器端终止而且客户端套接字没有被关闭,那么就由ObjectInputStream方法的java.io.ObjectInputStream.readObject()来按照事先约定好的格式读取输入流中写入的信息,如果是系统信息则显示在显示区域;如果是关闭服务信息,则关闭输入输出流并关闭套接字,并显示服务器已经关闭;如果是聊天信息,则显示在显示区域;如果是用户列表,则调用java.lang.String.split(String arg0)把列表保存在用户数组中,方便分别把他们加入用户客户端的用户列表组合框中。【测试过程】(1)设置端口(2)客户端 (3)登录 (4)聊天 【成员分工】张浩:浏览课程所学内容及课堂未涉及的知识,筛选综合本课程多章内容的题材;分析所要实现的功能;主框架及布局的设计;各个容器布局及内容的设计;编写代码;编写文档。俞勇:搜集有关材料;分析功能需求;概要设计;设计测试用例。【自我评价】在第一阶段,浏览课程时巩固了课堂所学知识。觉得所能做的事情很有限,所以近一步翻阅了很多资料,深入学习了swing图形界面设计和网络应用程序设计部分,初步选定题材。同时在分析功能 需求的探讨中,仔细分析常见的聊天系统,更深入了解了其一般原理,又加强了团体合作意识。在编写代码实 现阶段,通过使用java api和利用网络资源搜索调试问题,掌握了很多实用的方法的使用和更多的调试错误类型及排错思路。【名词解释】 1,TCP/IP(Transmission Control Protocol,传输控制协议)是一种基于连接的协议,可以在计算机之间提供可靠的数据传输。一个形象化得比喻是将通过TCP传输数据比作打电话,即先建立起连接通道,再传送数据。连接通道的两端成为套接字(socket)。套接字就像是在打电话时所用的话筒。在拨通电

温馨提示

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

评论

0/150

提交评论