软件工程毕业论文-基于java的网络聊天室的设计与实现--服务器端.doc

上传人:一*** 文档编号:2096277 上传时间:2019-04-22 格式:DOC 页数:25 大小:377.88KB
下载 相关 举报
软件工程毕业论文-基于java的网络聊天室的设计与实现--服务器端.doc_第1页
第1页 / 共25页
软件工程毕业论文-基于java的网络聊天室的设计与实现--服务器端.doc_第2页
第2页 / 共25页
软件工程毕业论文-基于java的网络聊天室的设计与实现--服务器端.doc_第3页
第3页 / 共25页
软件工程毕业论文-基于java的网络聊天室的设计与实现--服务器端.doc_第4页
第4页 / 共25页
软件工程毕业论文-基于java的网络聊天室的设计与实现--服务器端.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、 1本科毕业论文(20 届)基于 java 的网络聊天室的设计与实现 -服务器端所在学院专业班级 计算机科学与技术学生姓名指导教师完成日期2目录1 绪论 .21.1 背景及意义 .11.2 研究现状 .12 系统分析 .32.1 实现技术 .32.2 系统分析 .63 系统设计 .73.1 系统功能结构 .73.2 系统业务流程 .83.3 系统实现原理 .83.模块化设计 .93. 数据库设计 .93.开发环境与运行环境 .103.7 客户端结构 .103.8 服务器端结构 .114 系统实现 .114.1 新用户注册模块 .114.2 登录模块 .134.3 消息通信模块:与显示的在线好友

2、间通信 .154.4 服务器端 .175 总结 .22参考文献 .23致谢 .2311 绪论1.1 背景及意义网络通信在当今信息社会中起着不可或缺的作用,人们可以利用网络通信技术进行即时的信息交流。比如 QQ 聊天工具,它就是利用网络通信技术开发的一款众所周知的网络聊天工具。目前,信息交流是互联网提供的主要内容,网络通信系统有多重实现方式,类似 ICQ 属于一种点对点的聊天系统;还有一种是基于 Socket 的集中式聊天系统,这种聊天系统需要登录统一的聊天服务器。当今主流的聊天工具有 QQ,ICQ , MSN Message 等,国内最热门的当属 QQ,腾讯 QQ是由深圳市腾讯计算机系统公司开

3、发的,基于 Internet 的即时寻呼软件。您可以使用QQ 和好友用户进行交流、信息即时发送、即时回复、收发即时,功能全面。QQ 支持显示朋友在线信息、即时传送信息、即时交谈、即时发送文件和网址。网络聊天以成为上网族的一种普遍的休闲方式,可以毫不夸张的说,全国的网民中没人不知道 QQ 聊天软件,所以,一款好的即时通信聊天软件成了上网的必备工具之一。网上有很多的聊天软件可供网民们选择,各有不同的特点和长处,可满足不同人的各种需求。局域网聊天工具,是在局域网内部使用的,用户之间用来交流的一个工具,一般都具有文本聊天和文件传输功能。局域网聊天软件因其使用简单,系统资源消耗少等优点,成为各企事业单位

4、等的局域网内广泛应用的软件之一。1.2 研究现状目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯 QQ、新浪UC 等,国外有著名的 MSN 等。本人取最具代表性的 QQ 和 MSN 进行了一些研究,作为我开发聊天系统的准备。腾讯无疑是国内即时通讯市场的霸主,自从 99 年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软 MSN 的强大攻势,腾讯QQ 的时常占有率依然稳步增长。腾讯的成功与其对 QQ 的不断创新和完善是分不开的。参考了许多网络上的资料,以及自己通过观察腾讯 QQ 运行时的各种细节。可以确定腾讯 QQ 是以多服务器提供服务、服务器总控

5、客户端、客户端之间 UDP 直连通信的。并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信。其模型如图 1.1:2图 1.1 腾讯 QQ 服务器-客户端模型与腾讯 QQ 不同,微软的 MSN Messenger 只使用了 TCP 作为传输层通信协议,所有客户端与服务器进行连接,然后通过与服务器的 TCP 连接进行中转通信。其模型如图 1.2:图 1.2 MSN 服务器-客户端模型腾讯使用的模型中,服务器主要处理客户端各种状态的控制,可以极大减轻服务器的处理压力,但其内部协议和实现复杂度都较高。而 MSN Messenger 所有数据都要经过服务器,服务器压力可想而知(难怪平时很少

6、见到使用 MSN 进行语音视频聊天的) 。32 系统分析2.1 实现技术2.1.1 Java 语言Java,是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由 Sun 公司的詹姆斯高斯林(James Gosling)等人于 1990 年代初开发。它最初被命名为 Oak,目标设置在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun 放弃了该项计划。就在 Oak 几近失败之时,随着互联网的发展, Sun 看到了 Oak在计算机网络上的广阔应用前景,于是改造了 Oak,在 1995 年 5 月以“Ja

7、va”的名称正式发布了。Java 伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Java 编程语言的风格十分接近 C+语言,Java 继承了 C+ 语言面向对象技术的内核,舍弃了 C+语言中容易引起错误的指针(以引用取代) 、运算符重载(operator overloading) 、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。在 Java SE 1.5 版本中 Java 又引入了泛型编程(Generic Programming) 、类型安全的枚举、不定长参数和自动装拆箱等语言特性。Java 不同于一般的编译运行计算机语言和解释执行计算

8、机语言。它首先将源代码编译成字节码(bytecode) ,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE1.4.2 发布后,Java 的运行速度有了大幅提升。与传统程序不同 Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。 “Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。Sun 公

9、司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。Java 语言有以下特点:简单(Simple):指的是去除了 C/C+中较少使用或可能不安全的功能,例如指标,运算子重载,多重继承等。 物件导向的(Object-oriented):利用 OOP 的三种基本特性:PIE(多型,继承,封装),来设计出可重複使用的元件,使系统有弹性易于维护。 网路的(Network-Savvy):提供容易使用的 API 来撰写网路程式 。直译式的(Interpreted):bytecode 在 JVM 上执行时,JIT

10、负责转换为机器码。 稳健的(Robust):捨弃了对记忆体的指标运作。 安全性(Secure):资源回收处理 (Garbage Collection)由 JVM 自行作记忆体管理,例外处理 (Exception) 可预防突发错误的产生。 4结构中立(Architecture Neutral):程式执行在虚拟机器上。 可携的(Portable) : Write once, run anywhere 指的是由 JVM 与不同的作业系统沟通。高效率的(High Performance):利用 HotSpot, JIT 技术改善效能。 多执行绪的(Multithreaded) :Java 程序可发出多

11、隻并行的轻量化行程。 动态的(Dynamic) :Java 程式执行时动态的连结类别库。Java 语言的优良特性使得 Java 应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java 对对象技术的全面支持和 Java 平台内嵌的 API 能缩短应用系统的开发时间并降低成本。Java 的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是 Java 企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。2.1.2 Java 与 InternetJava 语言取得成功的领

12、域之一就是网络(其他语言)数页代码-(Java)一条语句。TCP/IP(传输控制协议/网间协议)是 internet 的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层)。大多数基于 internet 的应用程序被看作 TCP/IP 协议的上一层, 如 : ftp, http, smtp, pop3, telnet, nntp 等。IP 地址:TCP/IP 网络中的每台计算机都有唯一的地址-IP 地址。在 Java 中,有一个用来存储 internet 地址的类叫 InterAddress。Java 提供的网络功能有三大类: URL,Socket,Datagra

13、m。1、URL 是三大功能中最高级的一种,通过 URL Java 程序可以直接送出或读入网络上的数据。2、Socket 是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道。3、Datagram 是更低级的网络传输方式,它把数据的目的纪录在数据包中,然后直接放在网络上。2.1.3 Socket 编程1)TCP/IP 协议TP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议/网际协议的缩写,TCP/IP 是当今网络互联的核心协议。TCP/IP 协议是聊天工具在建立连接下使用的协议,该协议是网络中使用的通讯协议

14、,包括传输控制协议和网际协议,TCP/IP 协议是网络互连的标准协议,可使不同环境下不同节点之间彼此通信,是连入互联网的所有计算机在网络上进行各种信息交换和传输所必须采用的协议。2)TCP/IP 协议进行传输数据传输的过程5应用程序为了传输数据会调用 TCP,将数据和对应的参数传给 TCP,将 TCP 数据包封装在 IP 包内,通过网络送给目的 TCP。接收方 TCP 在接收到数据后通知上层应用程序,TCP 将保证接收数据的正确性。在实现 TCP 的主机上,TCP 可以被看成是一个模块,和文件系统区别不大,TCP 也可以调用一些操作系统的功能, TCP 不直接和网络打交道,控制网络的任务由专门

15、的设备驱动模块完成。TCP 只是调用 IP 接口,向TCP 提供所有 TCP 需要的服务。3)端口号有的时候,一个 ip 地址不能完整的标识一台服务器,这是应为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以就在传输层和应用层上设置接口,就是端口。端口实际是一个 16 位长的地址,它的范围是 065535 之间,其中 01023 是熟知端口,主要是给提供服务的应用程序使用,这些端口是所有应用进程都知道的,102465535 为一般端口,也称动态端口、连接端口,用来随时分配要求通信的各个客户端应用程序。在数据传输过程中,各种服务器不断的检测分配给它的端口

16、,一边发现要求和它通信的客户端。4)Socket 通信机制Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点称为套接字,套接字是在比较低的层次上通信的。Socket 所完成的通信时一种基于连接的通信,即在通信开始之前先由通信双方确认身份并建立一条专用的虚拟连接通道,然后他们通过这条通道传送数据信息进行通信,当通讯结束时再将原先所建立的连接断开。Socket 程序的工作过程:1、建立 Socket 连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。2、数据通信:利用虚拟连接通道传送数据信

17、息。3、关闭:通信结束时,再将所建的虚拟连接断开。三次握手:第一次握手:原主机发送一个带有本次连接的序号的连接请求。第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有一个本次连接序号和源端机连接序列号的确认。第三此握手:源端机收到含有两次初始序列号的应答后,再向目的主机发送一个带有两次连接的序列号的确认。具体过程如下:6主机 A 主机 B图 2.1 三次握手图2.2 系统分析2.2.1 可行性分析经济可行性:开发此网络通讯系统所需的硬件和软件环境(Myeclipse 开发工具;数据库 SQL Server),可以从相关网站免费下载。操作可行性:此通信系统具备友好的用户界面,使用方便,

18、快捷,操作简单易于维护,易于被用户接受,用户只需熟悉操作计算机,和对此系统做简单的了解可方便使用。技术可行性::Java 技术日趋成熟,java 的平台无关性使得用 java 的应用程序不用修改就可在不同的软硬件平台上运行,它支持数据分布和操作分布着两种分布性。Java 提供了一整套网络类库,开发人员可以利用类库进行网络程序设计,方便实现java 的分布式特性。另外 java 还支持多线程。Java 提供了一个类 thread,由它负责启动、运行、终止线程,并可检查线程状态。利用 java 的多线程编程接口,开发人员可以方便的写出至此后多线程的应用程序,提高程序执行效率。开发软件环境:winx

19、p ,Sql server,Myeclipse 。2.2.2 系统功能需求分析根据用户对聊天工具的要求,可分为以下几点:(1) 操作简单方便、界面简洁美观;(2) 可以在局域网实现文字和文件的传输;(3) 可以实现用户的注册、登录和注销;(4) 程序启动之后就能看到当前哪些用户在线,哪些可以与之进行对等通信。可以实现局域网聊天;(5) 一旦有某个网内的机器上线或下线了,要有即时通知,并能及时更新用户界面中的用户列表;(6) 当单击用户列表项的时候,直接在聊天对话框聊天,发送聊天信息;(7) 当有远程用户向本机发送文件的时候,弹出一个消息提示,用户可选择接收或者拒绝;(8) 文件传输过程中,应该

20、有当前传输状态提示,并作为当前网络状态的一种反馈;SYN=1,SEQ=ACK=1,SYN=1,SEQ=aaaaaaaaaaACK=1第一次握手,主机 A 向主机 B 发送连接请求第二次握手,主机 B 收到主机 A的请求,向主机 A 回发一个确认,同时向主机 A 发送一个连接请求第三次握手,主机 A 收到主机 B 发送的数据包在向主机 B 发送一个确认连接7(9) 为用户提供一个简单的聊天记录保存功能。聊天系统包括服务器端和客户端。服务器端的主要任务:服务器端应当建立一个ServerSocket,并且不断进行监听是否有客户端连接或者断开连接(包括判断没有响应的连接超时);服务器端应当是一个信息发

21、送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。客户端主要完成的工作包括:与服务器端建立通信通道,向服务器端发送信息;接收来自服务器的信息。3 系统设计 3.1 系统功能结构本系统中主要包括两个部分:服务器端和客户端。(1) 服务器端的功能包括:验证登录:检查登陆信息是否正确,并向客户端返回登陆信息,如信息正确,就将在线用户发给该用户,并将该用户的状态发给各在线用户,同时在服务器端显示出来。处理注册信息:用户提交注册信息后,自动验证是否重名,如果重名则返回提示,如果不重名则将信息加入数据库。处理用户发送信息:服务器监控聊天内容,服务器过滤非法内容。发布系统消息:将此用户上线

22、、下线消息发给各客户端,并在服务器端显示在线用户信息。保存聊天记录:在接收到用户保存聊天记录申请的同时,自动保存聊天记录为文本文件。保存服务器日志。(2) 客户端的功能包括:用户登录:建立与服务器的连接并登录,能显示登录错误信息。用户注册:建立与服务器连接并提交注册信息,注册成功后自动登录。界面显示:登录成功后,自动显示在线用户列表。发送消息:选择要发送对象后,可以发送文本消息或者文件。发送信息时,可以选择私聊,即其他人看不到信息。接收消息:收到其他用户消息后,提醒并显示。接收文件时可以选择接收或拒绝。聊天记录的保存:用户下线前自动向服务器发送申请保存聊天记录。3.2 系统业务流程首先由服务器

23、开启服务,监听局域网中客户端的连接请求,客户端连接后,登录或者处理注册信息,并返回操作结果。客户端注册或者登录成功后,显示聊天窗体,8此时各客户端将自主的监听局域网中的用户,实时更新自己的用户列表并显示,各个客户端之间的信息交流不再通过服务器转发,而是自主通信。局域网聊天系统的业务流程图如图所示:图 3.1 业务流程图3.3 系统实现原理聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在 TCP/IP 环境下,实现服务器端和客户端两部分程序。客户与服务器之间用 TCP 协议连接,客户与客户之间通过服务器转发消息.其中用到了 Socket,它是介于应用程序与硬件之间,并可以提供标准的函数以符合不同的网络硬件规格。客户端聊天窗口协议发送消息服务器聊天窗口记录所有注册用户和显示当前在线人数发送消息发送消息客户端登录窗口登录验证登录注册判断Y

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。