




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计说明书文件传输与聊天系统设计班 级: 2013年 6 月文件传输与聊天系统设计摘 要本文介绍了一种基于TCP/IP协议使用Socket技术实现的聊天室系统,包括私聊功能和文件传输功能,对系统的主要模块进行了分析,并对系统实现过程中遇到的关键性技术进行了阐述,最后对系统进行了了设计实现,该系统能够进行登陆、注册、聊天室聊天、私聊、文件发送等功能,基本上满足了即时通讯的要求。开发使用JAVA技术,数据库使用MySQL。关键词 聊天室、JAVA、文件传输全套设计加扣 3012250582File transfer and chat system designAbstractAbstract This paper describes an approach based on TCP / IP protocol using the Socket technology chat room system, including private chat features and file transfer capabilities, the main modules of the system are analyzed, and the system implementation process encountered a critical techniques are described, the final design of the system has been implemented, the system is able to login, registration, chat rooms, private chat, send files and other functions, basically meet the real-time communication requirements. Developed using JAVA technology, database use MysqlKeywords chat rooms, JAVA, file transfer目录1 引言61.1研究背景61.2研究目的及意义62 系统开发技术分析62.1 C/S架构62.2 TCP协议72.3 JAVA语言72.4 MySQL数据库83 系统需求分析83.1可行性分析83.2用户需求描述84 概要设计94.1系统概述94.2系统架构94.3系统客户端解决方案94.4系统服务器端104.5Socket技术及TCP协议114.6系统通信机制研究115 详细设计115.1服务器端运行流程125.1.1服务器端连接过程125.1.2服务器端消息处理135.2系统客户端的设计与实现135.2.1用户界面135.2.2数据存储135.3即时通讯模块145.3.1消息类155.3.2消息的发送和接收155.3.2.1用户的登录和登出165.3.2.2私聊模块165.3.2.3文件传输模块166 软件测试166.1服务器界面166.2用户登录界面176.3用户注册界面186.4聊天室界面196.5查看聊天记录界面196.6修改个人信息界面206.7换肤界面206.8私聊界面216.9文件传输界面226.10文件接受界面227 总结23参考文献24致谢251 引言1.1研究背景自从上世纪中叶第一台计算机诞生以来,计算机越来越走进人们的生活当中,特别是随着计算机网络的发展,把全世界的人们紧密的联系在一起,大的扩展了计算机的功能,人们越来越离不开计算机了。如今,作为网络应用之一的聊天工具,越来越受到人们的欢迎和重视。现在已有的聊天软件和聊天工具不胜枚举,流行的主要有QQ,ICQ,MSN Message,NetMeetting,mIRC和郎码UC和各种的网页聊天室等。这些软件特别是QQ升级很快,其功能是越来越来强大,将代表着聊天软的发展方向1。目前,聊天软件的功能除了最基本的文本聊天,已经可以语音聊天,图像聊天,视频聊天,文件传输等三维聊天,还发展了短信发送,无线聊天,在线游戏等功能,可以预见在不久的将来,聊天软件将成为人们通过因特网相互联系和娱乐的主要平台。然而这些软件的一个共同的缺点是采用了c/s的结构模式,如果服务器出现故障,则这个聊天系统都将瘫痪。以后的系统会基于netbios的设计与实现,它是在netbios通信和文本聊天的基础上来实现语音聊天,文件传输。从一开始就要求该聊天软件能够自建服务器,它能够被应用在一个个独立的自治系统中,灵活性很大。1.2研究目的及意义研究聊天工具具有非凡的意义,它的具体意义: (1)目前,计算机的发展离不开网络这一方向,网络将大大扩展计算机的功能,研究计算机在网络方面的技术以及应用,挖掘计算机的网络潜能,将能够大大提高我们对计算机的本身的认识,同时也能加深对计算机网络的认识。(2)网络的一大应用就是用于用户之间联络的聊天工具,通过对聊天工具的开发,我们将了解计算机如何通过网络相互通信及在此相互通信的基础上实现的应用程序级的协议。2 系统开发技术分析2.1 C/S架构C/S结构软件(即客户机/服务器模式)分为客户机和服务器两层,客户机不是毫无运算能力的输入、输出设备,而是具有了一定的数据处理和数据存储能力,通过把应用软件的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。由于服务器连接个数和数据通信量的限制,这种结构的软件适于在用户数目不多的局域网内使用。2.2 TCP协议TCP即传输控制协议,是一个工业标准的协议集,是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。首先,TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,它是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法),该算法主要包括三个主要部分:1,加性增、乘性减;2,慢启动;3,对超时事件做出反应。2.3 JAVA语言Java语言是SUN公司于1995年推出的一种面向对象的新一代程序。到现在JAVA已经成为主流的开发语言之一,其应用领域带在继续扩大。特点:(1)面向对象,他是更加彻底的面向对象,面向对象的特点使设计集中于对象及其对象之间的联系。JAVA中提供了简单的类机制和动态接口模型,使对复杂系统的设计更加简单、清晰。(2)平台无关性,用JAVA写的应用程序不用修改就可在不同的软硬件平台上运行。(3)可靠性和安全性,由于JAVA主要用于网络应用程序开发,因此对安全性有较高的要求。JAVA通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。当JAVA字节码进入解释器时,首先必须经过字节码校验器的检查,然后JAVA解释器将决定程序中类的内存布局,随后,类装载器负责把来自网络的类装载到单独的内存区域,避免应用程序之间相互干扰破坏。最后,客户端用户还可以限制从网络装载的类只能访问某些文件系统。上述几种机制结合起来,使得JAVA成为安全的编程语言。JAVA还有分布性、多线程、高效性和动态性等优点。2.4 MySQL数据库MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择Mysql作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。3 系统需求分析3.1可行性分析系统采用C/S结构模式,将系统分为服务端、客户端两部分;采用TCP协议,TCP协议是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。使用JAVA语言进行开发,JAVA语言是一种面向对象的语言,具有跨平台、一次编译多次运行的特点。使用Socket套接字技术,服务器运行使用多线程,用集合存放连接到服务器上客户端的信息,针对每个用户的请求,创建一个线程来进行响应,同时采用线程池来创建和管理线程,提高了服务器的执行效率。客户端界面采用JAVA语言Swing技术开发,开发起来方便快捷,比AWT具有更好的布局。使用MySQL数据库存储相关信息,MySQL体积小、速度快,语句标准,开发更便捷,使用JAVA语言JDBC技术与数据库进行信息交互。客户端与服务端信息交互采用对象输入输出流,将交互信息封装成对象,更加体现了JAVA面向对象的特点,使用多线程技术,保证通信的可靠性。因此在技术层面上,是完全可行的。3.2用户需求描述即时通讯系统通常是指信息的发布者与信息的接收者几乎同时达到传送要求,延迟很小的系统工具。如常用的QQ工具,飞信,MSN等通讯系统工具。需要实现的功能有:(1)用户的注册、登录,个人信息的设置;(2)聊天室聊天、私聊;(3)实现用户之间文件传输; 总的来说,该系统应该能够提供基本的即时通讯功能,使用起来应该可靠,安全,操作简单,界面友好美观。4 概要设计4.1系统概述系统采用C/S体系结构,采用TCP作为即时通讯协议,连接可靠,使用Socket技术开发,实现服务端端与客户端之间信息交互,完成客户端之间的相互通信。使用MySQL数据库完成用户信息存储,使用JDBC进行与数据库的交互,实现登陆、注册模块。登陆到聊天室之后可以实现即时聊天,在聊天室的基础上开发私聊模块,并实现文件传输。4.2系统架构本系统采用客户端(C)/服务端(S)架构的体系结构,具有服务器端和客户端。客户端:基于JAVA语言Swing技术开发,开发更加快捷便易,用很少的代码就可以开发出优雅的用户界面,使程序更加友好美观。将信息封装成对象,使用对象输入输出流,与服务器端进行信息交互,完成即时通讯 。客户端负责初始化通信过程,进行即时通讯时,由客户端负责向服务器发起创建连接请求。服务器端:采用Socket技术开发,使用多线程,采用TCP协议,保证连接的可靠性及会话的准确性。服务器对每个客户端的连接进行认证,对认证通过的客户端创建会话,客户端与服务器端之间的就在该会话的上下文中进行,客户端之间的信息交互是由服务端转发的。服务端实现的功能就是存储连接到服务器的客户端会话,根据传来的信息转发到相应的客户端。 4.3系统客户端解决方案系统客户端采用JAVA语言开发,具有跨平台,一次编译多次运行的特点,使用Swing技术开发用户界面,方便快捷。使用Socket技术,基于TCP通讯协议,由客户端向服务器发起会话请求;将信息封装成对象,使用对象输入输出流传输;登陆、注册信息存储使用MySQL数据库,把系统的客户端分为四大模块进行设计开发。系统总体框架如图4-1所示:饭后茶语聊天室登陆注册聊天室界面密码找回私聊操作个人资料修改皮肤更改聊天记录下线操作图4-1 系统总体框架图(1)登陆模块:验证用户登陆信息,创建与服务器端的会话连接,登陆到聊天室界面。 (2)注册模块:注册用户信息。(3)聊天室模块:实现即时聊天功能,在此基础上开发私聊模块及文件传输功能;添加修改个人资料模块,增加一些聊天室皮肤,使系统功能更加完善,界面更加美观;使用文件流保存读取聊天记录。(4)密码找回模块:通过注册信息找回密码。4.4系统服务器端本系统服务器使用JAVA语言开发,因JAVA语言具有跨平台、一次编译处处运行的特点,可以将服务器架设与多种操作系统的平台之上;采用Socket技术建立服务器,采用TCP协议进行会话,先响应客户端请求,创建连接,再有服务器转发客户端发来的信息。针对每个用户的请求,创建一个线程来进行响应,同时采用线程池来创建和管理线程,提高了服务器的执行效率。线程池的大小可以根据服务器在运行的过程中接收到的用户请求的数量进行自动调整。如果长时间没有用户请求,则可以销毁一定数量的线程,使线程池中保持一定的线程数。当有用户请求时而线程池中没有空闲线程,且此时线程池中线程数没有达到最大线程数,则创建新的线程,如果达到最到线程数而又没有空闲线程时,则用户请求进入队列等待,直到线程池中有空闲线程,当用户退出时,回收线程到线程池中。4.5Socket技术及TCP协议Socket通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过套接字向网络发出请求或者应答网络请求。TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。 4.6系统通信机制研究TCP提供一种面向连接的、可靠的字节流服务。提供一个时时的双向的传输通道。TCP将用户数据打包构成报文段,它发送数据后启动一个定时器,等待对端数据确认;另一端对收到的数据进行确认, 对失序的数据重新排序,丢弃重复数据;TCP提供端到端的流量控制,并计算和验证一个强制性的端到端检验。根据这些特点,在本系统的实现中,采用TCP协议来作为构建客户端与服务器端之间的网络连接。使用Socket技术创建连接,将交互信息封装成对象,使用对象输入输出流传送信息,完成服务端与客户端的信息交互。5 详细设计本系统为客户端服务器端的系统架构,服务器端由基于Socket技术开发的服务器和MySQL数据库共同构成。客户端是基于JAVA语言开发的,负责连接并登录服务器,通过服务器来实现客户端与客户端或PC机客户端之间的即时通讯。本系统的框图如图5-1所示:图5-1 系统框图5.1服务器端运行流程服务器运行后,开始在端口(客户端连接端口8080)监听客户端的连接。服务端创建ServerSocket,由线程启动,监听8080端口。接收每个由8080端口进来的客户端Socket。使用Map保存连接的客户端,用用户名做键值,并获取用户的输入输出流,同时存在Map中,用户退出时将客户端从Map中移除。每个客户端创建一个线程专门负责接受用户传来的信息,对信息做相应的分类,再转发给相应的用户。5.1.1服务器端连接过程当有客户端进行连接时,首先调用ServerSocket的accept方法获取客户端的Socket对象,建立与客户端之间的连接,获取与客户端进行信息交互的对象输入输出流,从而读取对象流中的对象,进行相应处理并转发给其他的客户端。客户端退出,服务端释放客户端Socket,并关闭相应的对象输入输出流,并通知其他用户下线消息。客户端连接服务端错误提醒Socket进入聊天室认证发起连接认证成功创建会话认证失败图5-2 连接服务器认证过程5.1.2服务器端消息处理在该系统中,我们主要是实现客户端与服务器端的连接。服务器针对每个客户端采用多线程模式,分别接受客户端Socket对象,及对象输入输出流,将消息封装成对象,方便服务端与客户端及客户端之间的交互,便于消息处理。服务端将客户端发送来的消息进行分类处理,如上线信息、下线信息、群聊信息、私聊信息、及文件传出分别处理,并转发给其他客户端。简而言之,服务器端实现的是创建可靠连接,并转发客户端信息。5.2系统客户端的设计与实现在系统客户端设计中,我们采用MVC(M是模型层,V是视图层,C是控制层)的设计模式来进行设计。将视图层与逻辑代码以及数据模型层进行分离,实现系统的松散祸合,便于系统的维护和代码的重用。在本系统中,视图层采用JAVA语言的Swing技术设计用户界面,方便快捷,可以用较少的代码,创建更加优雅的界面。在数据模型层使用JDBC来屏蔽底层具体的存储、交互细节,使开发人员可以专注业务逻辑的开发而无需关心所使用的数据库和数据访问细节,从而使应用系统具有良好的数据迁移性。5.2.1用户界面使用JAVA语言的Swing技术开发用户界面,使用较少的语言开发出优雅的界面,方便快捷。在组件方面选用JFrame为基础组件,使用空布局的方式让界面更加多样化、更加美观。使用JPanel将界面模块化,便于开发管理。使用JLabel做为背景底板,方便图片更换、显示。使用ActiongListener做事件监听器,完成对界面的监听,处理响应事件。5.2.2数据存储在客户端中,我们MySQL数据库来存储用户信息。使用JAVA类封装用户信息,在DAO层编写数据库相关操作,体现出MVC编程思想,功能模块分工明确,便于开发。使用JAVA语言的JDBC进行数据库连接,使应用系统具有良好的数据迁移性。用户表chater:用来存储用户的用户名和密码信息。表5-1 user表结构字段名数据类型描述chat_usnamevarchar 用户名chat_uspasswdvarchar密码用户信息表chater_info:用来存储用户的具体信息。表5-2消息表结构字段名数据类型描述CHAT_USNAMEVarchar用户名chat_info_sexVarchar性别CHAT_INFO_HABBITVarchar爱好CHAT_INFO_IDVarchar证件号CHAT_INFO_BIRTHDAYVarchar出生日期CHAT_INFO_COLLEGEVarchar学校CHAT_INFO_EMAILVarchar邮件CHAT_INFO_PROVINCEVarchar省份CHAT_INFO_CITYVarchar城市CHAT_INFO_USINFOVarchar其他信息5.3即时通讯模块系统客户端通过Socket技术,采用TCP协议连接到服务器,通过服务器作为即时通讯平台,实现客户端与客户端之间的即时通讯。TCP是可靠的连接,在连接服务器的过程中,需要等待服务器的响应,程序才能继续运行,而这个等待的过程受网络质量的影响或长或短,都会造成程序的暂停。在应用程序中,与用户进行交互的应用活动都是运行在主线程中,如果把与服务器的连接过程也放在主线程中进行,就容易造成系统运行缓慢,甚至系统出现死机的假象,最直接的表现就是在系统界面上,你按任何键都没有反应。为了解决这个问题,在与服务器的通信过程中采取多线程的方式,主线程负责建立与客户端建的连接,每个客户端开启一个新的线程负责消息的接收、发送。5.3.1消息类 将消息封装成类,更好的体现了面向对象的思想,同时使信息发送、接受及处理更加方便快捷。消息类中的主要字段:消息标志:private int chatMessageFlag;发送人名称:private String sentName;接收人名称:private String receiveName;消息:private String message;发送时间:private Date sentDate;是否在线:private boolean online;与文件相关信息:文件长度:private long fileLength;文件名称:private String fileName;是否接受文件:private boolean reciveFileFlag;发送结束标志:private boolean endFlag;存储要发送的文件字节:public byte fileByte;5.3.2消息的发送和接收通过系统,用户登录到服务器,向服务器发送登陆信息及连接请求,服务端根据登陆状况判断是否允许登录进聊天室,登录成功则创建会话连接,获取对象流,发送当前聊天室在线人列表,想其他客户端发送用户上线消息。连接建立后,服务端根据聊天信息里的特殊标志及是否私聊等相关进行处理,并转发给其他客户端。客户端登录成功后,新建线程进行消息的接受和发送,将消息封装成类,调用sendMessage方法将消息写入到与服务端建立会话之后获取的对象输入流中,完成消息的发送;接受到对象后,调用readMessage方法对对象进行处理,根据传递的对象不同,可分为用户列表、群聊信息、私聊信息、文件信息分别进行处理。5.3.2.1用户的登录和登出客户端成功连接到服务器后,向服务器发送请求登录的%-online-%语句,服务器收到请求后,进行身份验证,如果验证成功的话,向客户端返回登录成功信息及当前聊天室用户列表。客户端接收到可登陆消息后便会登陆进聊天室界面。用户退出系统,客户端的发送%-EXIT-%语句就可以退出系统,服务器收到该请求后,关闭与客户端的连接,回收线程到线程池中,同时会你的离线信息广播给其他客户端。5.3.2.2私聊模块在聊天室的基础上开发私聊模块,双击聊天室用户名列表里的用户,即可进行私聊,将打开的私聊窗口存储在Map中,用和谁聊天作为键值,接受信息后分类,发给相应的私聊窗口中。5.3.2.3文件传输模块在私聊的模块基础上开发文件传输功能,将文件相关信息封装到要发送的信息类中,根据不同的返回信息进行不同操作,文件发送要等对方相应后才继续发送文件,防止字节混乱。文件传输的本质是:将文件读入到文件流,用字节的方式发送给服务端,服务端转发给其他客户端。文件传输过程不影响即时聊天功能。6 软件测试6.1服务器界面服务器界面如图6-1:图6-1:服务器界面直接点击启动服务器按钮即可启动服务器。6.2用户登录界面输入用户名和密码,如果用户名和密码不正确,系统会提示用户重新输入数据登录。图6-2:用户登录界面6.3用户注册界面图6-3:用户注册界面6.4聊天室界面图6-4:聊天室界面6.5查看聊天记录界面图6-5:查看聊天记录界面6.6修改个人信息界面图6-6:修改个人信息6.7换肤界面图6-7:换肤界面6.8私聊界面图6-8:私聊界面6.9文件传输界面 图6-9:文件传输界面6.10文件接受界面图6-9:文件接受界面7 总结通过几个月的努力,即时通讯系统在指导老师的全心指导下,在同学的积极配合与帮助下,基本功能顺利完成。在JAVA开发方面,我学到了不少知识。开发时遇到了许多的困难,但是通过自己的努力,还有老师同学们的帮助,最终还是迎刃而解了。 这次毕业设计完全是按照软件工程学的方法来进行设计和开发的。在开发过程中,认真调查分析了用户的需求,及时准备了详细的文档资料,这让我在开发过程中少走了许多弯路。本次设计开发的系统较为庞大,涉及的内容较多,设计流程比较复杂,使我深刻地体会到软件开发是一项集体项目,单靠一个人就想解决所有的问题是不太实际的。同时,在这次设计中,我也发现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年及未来5年中国深圳家装市场竞争策略及行业投资潜力预测报告
- 互动墙面艺术应用-洞察与解读
- 智慧景区管理创新-第2篇-洞察与解读
- 2025河北沧州市孟村闻知饶安中学招聘模拟试卷及一套参考答案详解
- 智能监测与预警系统集成-第1篇-洞察与解读
- 2025年蒲江县公开招聘事业单位工作人员(14人)模拟试卷及答案详解(名师系列)
- 2025广东深圳大学文化产业研究院周建新教授博士后招聘1人模拟试卷及答案详解(典优)
- 2025年合肥长丰县部分单位招聘39人考前自测高频考点模拟试题参考答案详解
- 2025年威海乳山市卫生健康局事业单位公开招聘工作人员(41人)模拟试卷附答案详解(考试直接用)
- 2025春季内蒙古包头市中心医院引进高层次和紧缺急需人才招聘考前自测高频考点模拟试题及答案详解(易错题)
- 2025年山东省淄博第十一中学高一下学期6月学业水平合格考模拟考试历史试题(含答案)
- 2025广东高考物理第一轮基础练习:机械能守恒定律(有答案)
- DB3301T 0461-2024电动自行车停放充电场所消防安全管理规范
- 渔船合伙投资协议书
- 大坝帷幕灌浆及充填灌浆施工方案
- 23年成考本科英语试卷及答案
- 冲孔灌注桩施工方案
- 高压输电线路维护保养方案
- 2025年物联网安装调试员(高级)技能鉴定考试题库
- 学校“1530”安全教育记录表(2024年秋季全学期)
- 2025年篮球比赛免责协议书模板
评论
0/150
提交评论