基于Socket网络聊天系统的设计与实现1.pdf
《基于Socket网络聊天系统的设计与实现1.pdf》由会员分享,可在线阅读,更多相关《基于Socket网络聊天系统的设计与实现1.pdf(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-摘摘要要随着 Internt 的飞速发展,网络聊天以其操作简单、方便快捷、私密性好等优点已经迅速发展成为最普遍的网络交流方式之一,越来越受到人们的青睐,丰富了人们的网上生活.开发并实现具有自身特色的网络聊天系统具有实际应用价值。本网络聊天系统基于 Java 应用程序设计,以 Cient/Serve为开发模式,以Eci为开发环境,以 MSL 为后台数据库,利用DBC 连接数据库。系统主要包括服务器模块和客户端模块,服务器模块能够对客户端发来的用户信息进行匹配、读取和转发;客户端模块能够进行注册、登录、聊天和文件传输。系统不但实现了点到点的聊天,还利用 Jva 提供的 Socet 类和多线程功能
2、,在单个程序中同时运行多个不同进程,从而实现多点对多点的聊天。总之,该聊天系统具有开放性,实时性,多话题交错等特点,方便了人们网上交流。【关键词关键词】网络聊天服务器模块客户端模块SoetABABACTACT-Wih the ri deveopmnt of Itre,netork ht ihits imple peraio,convennt ad gondivacy has quilycme thost poula wy comniction networks,mo an moreplelike it,enrihepls onine les Deelopt and Ralizaio of th
3、e twork chat sysm wh is oncharaceisticsand haspractical appliton vlue.he Iternt catsystemiseonJavaapplicaion,designby Cliet/Servera t deopenof mols,as clipse vlomntnioment,MySL se baend dtbse,an usng JBC to connect databae.he system icludessever mdulesan clitmous,server module ca mtch usr ata,read a
4、ndfward the fomationhh is sen bycnt;cien modul t rgst,lgin,hat and file transe he ssm nt oy chieves pertoeer cht,ut ao usthJava prvis oket lasand mlthrdig capailities,in a gle gram run difretrocess at t setme,inorde to acve ulipont chat。Ishot,t hat yste is pe,realtimeandloc staggrd featues,easy or p
5、eople o cmmunicatonline。【y ods】Network hatClienModulServer ModueSoct-目目录录前言.错误错误!未定义书签。未定义书签。第一章系统开发工具简介错误错误!未定义书签。未定义书签。第一节 客户机/服务器模型.错误错误!未定义书签。未定义书签。第二节AVA 简介错误错误!未定义书签。未定义书签。第三节 Socket 简介.错误错误!未定义书签。未定义书签。第四节Ecis简介错误错误!未定义书签。未定义书签。第五节 ySQL 简介错误错误!未定义书签。未定义书签。本章小结.错误错误!未定义书签。未定义书签。第二章系统分析错误错误!未定义
6、书签。未定义书签。第一节 可行性分析错误错误!未定义书签。未定义书签。第二节 业务流分析.错误错误!未定义书签。未定义书签。第三节 需求分析错误错误!未定义书签。未定义书签。一、系统设计目标.错误错误!未定义书签。未定义书签。二、系统功能需求错误错误!未定义书签。未定义书签。本章小结.错误错误!未定义书签。未定义书签。第三章系统概要设计错误错误!未定义书签。未定义书签。第一节系统总体描述错误错误!未定义书签。未定义书签。第二节 模块设计错误错误!未定义书签。未定义书签。第三节 数据库设计错误错误!未定义书签。未定义书签。一、设计原则.错误错误!未定义书签。未定义书签。二、具体步骤.错误错误!未
7、定义书签。未定义书签。本章小结.错误错误!未定义书签。未定义书签。第四章系统实现.错误错误!未定义书签。未定义书签。第一节 数据库模块实现错误错误!未定义书签。未定义书签。一、数据流图.错误错误!未定义书签。未定义书签。二、数据库的连接.错误错误!未定义书签。未定义书签。第二节注册模块实现.错误错误!未定义书签。未定义书签。第三节 登录模块实现.错误错误!未定义书签。未定义书签。第四节 聊天模块实现.错误错误!未定义书签。未定义书签。第五节 文件传输模块实现.错误错误!未定义书签。未定义书签。本章小结错误错误!未定义书签。未定义书签。第五章系统测试.错误错误!未定义书签。未定义书签。-第一节服
8、务器模块测试.错误错误!未定义书签。未定义书签。第二节 注册模块测试.错误错误!未定义书签。未定义书签。第三节登录模块测试.错误错误!未定义书签。未定义书签。第四节 聊天模块测试错误错误!未定义书签。未定义书签。第五节文件传输模块测试.错误错误!未定义书签。未定义书签。本章小结.错误错误!未定义书签。未定义书签。总结错误错误!未定义书签。未定义书签。致谢.错误错误!未定义书签。未定义书签。参考文献错误错误!未定义书签。未定义书签。附录.错误错误!未定义书签。未定义书签。一、英文原文错误错误!未定义书签。未定义书签。二、英文翻译.错误错误!未定义书签。未定义书签。-前前言言随着互联网的快速发展,
9、网络聊天软件以它的实时性、高效率和低成本的特质充当了信息交流的媒介,并逐渐成为网络商圈和生活商圈中不可或缺的组成部分1。网络聊天工具实现了“沟通无极限”,它打破了办公室里上级与下级直接的等级限制,也打破了长辈与晚辈之间的时间限制,也打破了异地之间的距离限制.同时人们对于网络聊天工具的友好的界面和快捷的操作方式也越来越高。大家都知道,网络上最常用的交流工具是腾讯 Q,QQ 来源于 OIC(openicq),ICQ 是“seeyo”的简称,是“我找你的意思。QQ 引用了 I的功能即即时通信,我们只要将对方加为好友,不管对方是否在线,我们都可以向对方发送信息,无论对方在哪里,只要登陆Q,他就能够看到
10、我们给他发的信息,我们就能够随时随地的和对方进行信息交流2。随着网络聊天工具的不断完善,它的功能越来越多样化,由最初的文字交流发展成现在的视频、语音交流,同时也提供了文件的发送和共享功能.其中不难发现,现在的网络聊天已经不再是一个简单的沟通工具,而是一个信息资讯、交流互动、娱乐的工具.随着技术的发展,网络聊天工具具有即时性、高效性、安全性、功能上较强的延展性,能够提供方便、快捷的交流3。本系统主要分析了网络聊天系统应该具备的功能、运行方式和实现方式,开发出一个基于 Soket 的网络聊天工具。该系统主要实现功能包括:注册、登录、聊天和文件的传输。-第一章第一章系统开发工具简介系统开发工具简介第
11、一节第一节客户机服务器模型客户机服务器模型一、一、C/C/结构简介结构简介客户机/服务器模型,又称为 Cet/Sever 模型,简称/架构 5。C/S计算技术在信息产业中占有重要的地位。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client 端和 Ser端来实现,降低了系统的通讯开销。客户端的任务是将用户的要求提交给服务器程序,再将服务器程序返回的结果以特定的形式显示给用户。服务器程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。二、二、C/C/特点特点CS 是客户端/服务器,一般适合于软件开发,对客户端的计算机配置要求比较高,
12、客户端也需要安装软件,比如 QQ。/架构软件的特点如下:应用服务器运行数据负荷较轻。C/体系结构由客户应用程序和数据库服务程序组成,二者分别称为前台程序和后台程序。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序当需要对数据库中的数据进行任何操作时,客户程序就会自动寻找服务器程序,并向其发出请求,服务器程序根据规程做出响应,返回结果,应用服务器运行数据负荷较轻。数据的储存管理功能较为透明.在数据库应用中数据的储存管理功能是由服务器程序和客户应用程序分别独立进行的。前台应用可以违反的规则,并且通常把那些不同的运行数据,在服务器程序中不集中实现.因此对于工作在前台程序上的最终用
13、户是“透明”的,他们无须干涉背后的过程就可以完成自己的一切工作。在C/S 提醒体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。-第二节第二节J J简介简介va是由uMosyste公司于95年5月推出的jaa程序设计语言和 Jva 平台的总称。用 Java 实现的 HotJva 浏览器(支持 Java p)显示了 Java 的魅力:跨平台、动态的eb、nternet 计算.从此 Java被广泛接受并推动力eb 的迅速发展,常用的浏览器限制均支持 Javaapplet。ava 平台由v虚拟机(Java Virual Maci)和 Java 应用编程接口(Aplicaon rog
14、Inerface,简称 API)构成.aa 应用在编程接口为av应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分.在硬件和操作系统平台上安装一个ava 平台之后,Ja应用程序就可运行。av应用编程接口已经从 1.1X 版本发展到 1.2 版.目前常用的av平台基于 Jaa1,最近版本为 Ja。ava 分为三个体系2SE(Ja2 andad Edtion),J2E(Jav2ltom trpiseEitio),J2E(aa2 Mcr Editin)。aa 是一种具有简单性(Jva 语法是+语法的一个“纯净”版本)、面向对象(面向对象是一种程序设计技术,它将重点放在数据和对象的接口上
15、)、网络技能(Java 有一个扩展的例程库,用于处理 HTP 和 FT这类的 TCI协议)、健壮性、安全性(Jaa 可以构建防病毒、防篡改的系统)、体系结构中立、可移植性、解释型、高性能、多线程的动态语言。Jva 的/建立于流(seam)之上。输入流读取数据;输出流写入数据。不同的流类如ava。eInutre和 sun.ntTeetututStrem 读写某一种数据源。但是所有输入流都有相同的基本方法,所有输入流也使用相同基本方法来读取数据7。Java 中的数据流类型有两种:输出流(OtpuStrea):输出流数据流经数据从程序送到数据接收者,如可以向显示器屏幕或者文件传输数据。输出流只能写不
16、能读。输入流(IputStram):程序从外部设备写数据时,使用输入流。输入流将数据从数据源传递给程序,可以从键盘或者文件中获得数据。输入流只能读不能写。-第三节第三节ocketocket简介简介Scket 通常被称为“套接字”,用于描述IP 地址和端口8。oce是建立在传输层协议(主要是TCP 和 UP)上的一种套接字规范9,Socet 接口是CPIP 网络的 API.在网络通信中,如果两台计算机之间是靠一个“通道”通信,那么这个“通道”的两端就是套接字。Sot 是传输层提供的网络进程通信接口,相当于我们现在所用的“插座”,是进程之间通信的抽象连接点。在日常生活中,我们常见到信号插座、电话插
17、座、接收/发送信号(或能量)的插座。Ske就相当于在电话线和电话机之间安放的插座。在网络上,两个程序是靠一个双向链路进行通信,这个双向链路的每一端就成为一个 Socet.进程之间通信,首先要需要建立一个自己的 Socke,每个ocke都能进行读/写操作,进行读写操作时就会用到 Socke中的输入/输出流10。客户端建立ockt 对象步骤:1、调用 ockt()创建一个流套接字,并连接到服务器端;o s=neSe(netAddres.etBNae(“服务器的主机名”),pot);2、调用 ocke 类的 gtOtputStram()和 getutStrem获取输出流和输入流,开始网络数据的发送和
18、接收。OutputSteamo=s。OuputStam();InpuStreams=。gtnpSream();byt buf=nw byte100;intlei.rd(bf);/从服务器端读取数据Ssemot。println(eString(bu,0,len));o。write(Hello,his iscient”。etByts());/向服务器端输入数据3、最后关闭通信套接字。os。cose();i。close();s。loe();服务器端建立 Socket 步骤:、创建一个服务器端套接字,并绑定到指定端口上;erveSket ssnew ServerScket(int pot),2、调用
19、ct(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。Socket s=ss.acept();3、调用Sock 类的 gtutpuSteam()和 geIutteam-获取输出流和输入流,开始网络数据的发送和接收。utpStream ss。etOtSteam();Iutteam is=sgetnputtam();os。rt(”ello,thi is server!”。getBtes());/向客户端发送数据byt buf=nw te100;int le=s。read(bf);/从客户端读取数据Systemut.prntln(neSrin(bf,0,n));、最后关闭通信套接字
20、。close();is.cos();。clos();建立连接后,客户端可以发出向 Soket 写数据的请求,服务器端则会对这个请求进行处理,并将处理结果通过ocket返回。服务器端则会对客户端进行监听,当监听到客户端有连接请求时,客户端就会与服务器端建立一个通信连接。同时,客户端被分配一个与 Socket 连接的本地端口号,服务器也会获取一个本地端口号。oket 之通信主要使用 T和 UDP 两种协议,UDP 和 TCP 套接字用于传输延迟敏感的,但耐错误的数据流,例如多媒体流的应用程序产生的数据,适不适合的11。面向连接的套接字使用的是TCP 协议,该协议可以保证数据的可靠传输;无连接的套接
21、字通信使用的是UP 协议,该协议不能保证数据的可靠传输和连接的有效性。1 1、使用、使用 TCPTCP 协议协议进行通信必须完成以下过程,如图 1.1 所示.客户端客户端通过 Conn方法连接到指定的服务器;通过 writ方法向服务器发送服务请求;通过 rad 从服务端接收数据。服务器端服务器端使用 Bind 方法绑定所指定的端口使 Sockt 与一个本地端口相联;使用Lisen 方法监听该端口上的请求;当监听到用户端发出的连接请求时,调用 Accp完成连接的操作;处理客户端请求后,使用 writ方法将数据返回给客户端;建立新的 Sket 以处理传入的连接请求。2 2、使用、使用 UDUD通信
22、必须完成以下过程,如图 1。2 所示。-客户端客户端通过 Cnet 方法连接到指定的服务器;通过 wte 方法向服务器发送服务请求;通过 read 从服务端接收数据;服务器端服务器端使用 Bind 方法绑定所指定的端口使 Scket 与一个本地端口相联;使用 Listn 方法监听该端口上的请求;当监听到用户端发出的连接请求时,服务器端处理连接请求;使用 wrie 将结果返回到客户端。Socket()服务器Socket()建立连接Connect()Blind()Read()服务请求Write()Listen()处理服务请求Accept()Write()响应服务Read()阻塞,等待客户请求连接C
23、lose()Close()图 11面向连接的客户机/服务器交互过程-客户服务器Socket()Socket()Connect()Blind()Listen()阻塞,等待客户请求连接服务请求Write()处理服务请求服务应答Write()Read()图 1。2面向无连接的客户机/服务器交互过程第四节第四节EclEclp pe e 简介简介Eclpse 是一个开放源代码、基于 Ja 的可扩展的开发平台。其实它只是一个框架和一组服务,用于通过插件组成构建开发环境。Eclipe 附带了一个标准的插件集,包括 Java 开发工具(Jaa Dvlopment Kt,J).Ecpse 还包括插件开发环境(u
24、gin evelopmen Envirnmen,PDE),这个组件主要是针对希望把 Ecie 扩展的软件开发人员,因为它允许构建与 Ecli环境无缝集成的工具。由于 Ecipe 中的每样东西都是-插件,对于给 Eclipse 提供插件,以及用户提供一致和同意的环境而已,所有工具开发人员都具有同等的发挥场所。E se 的本身只是一个框架平台,但是由于很多插件的支持使得Eclips拥有其他功能相对固定的D软件很难具有灵活性。许多软件开发商以 Eclpse 为框架开发自己的 IDE。Elips是一个开放源码项目,由于开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们的关
25、注。第五节第五节SQLSQL 简介简介MyQL 是目前最为流行的开放源码的数据库管理系统(BM),是完全网络化的跨平台的关系型数据库系统,它是由瑞典的 MQLAB 公司开发、13发布并支持的.它被广泛的应用在en上的大型网站开放中2。yS最初的开发出发点是使用 MyQ来连接用户的表,这类表采用了快速低层面(ISM)子程序。然而,经过一些测试后,发现 MSL 的速度或灵活性不能满足用户的需求。所以为用户的数据库提供新的QL 接口,但 API 接口与ySQL 的几乎一样。MyQL 一直专注于速度、可靠性、扩展性和易用性,而且在发展过程中,不断引入了一些企业级特性,包括复制、全文搜索、事件、外键完整
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Socket 网络 聊天 系统 设计 实现
限制150内