1、本科生毕业论文基于 java 的即时通讯系统The Instant Messaging System Of Java目 录目 录摘 要 .IABSTRACT .II第 1 章 绪论 .11.1 引言 .11.2 研究的目的和意义 .11.3 国内外发展状况 .21.4 相关技术介绍 .21.4.1 Java 及其多线程特点 .21.4.2 Java 与 internet .3第 2 章 系统需求分析 .52.1 系统可行性分析 .52.2 系统功能分析 .52.3 系统架构选择 .52.4 系统运行需求 .6第 3 章 系统概要设计 .73.1 系统结构设计 .73.2 系统流程图 .9第 4
2、 章 系统详细设计 .114.1 系统通信实现原理 .114.1.1 客户端与服务器通信原理 .114.1.2 客户端和客户端之间的通信 .124.2 服务器端设计 .124.2.1 服务器的启动和初始化 .134.2.2 数据库连接 .144.2.3 消息处理器 .154.3 客户端设计 .164.3.1 用户注册 .164.3.2 用户登录 .174.3.3 一对一聊天和多对多聊天 .204.3.4 文件发送和接收 .224.3.5 好友的搜索和添加 .254.4 数据库设计 .28目 录4.4.1 Oracle 的特点 .284.4.2 系统数据表设计 .28第 5 章 总结 .30鸣
3、谢 .31参考文献 .32附 录 .33摘 要摘 要随着互联网的发展日益壮大,人与人之间的沟通更加紧密,方便和快捷。即时通讯系统作为一种基于互联网,具有快速、实时、准确的交流工具,它提供文字消息的收发,语音和实时的视频交流,数据的传输等多种强大的功能,使这其成为了在互联网上和他人联系的重要方式,可以加强信息沟通,推动政府机构、大型事业单位信息化的建设,因此开发即时通讯系统具有重要的意义!本系统是基于 java 平台的一个即时通讯系统。系统采用 C/S 架构,用 java 的 Swing 搭建系统界面,客户端与服务器的通信、客户端与客户端的通信分别是基于 TCP/IP 和 UDP 两种通信协议。
4、系统采用多线程技术来提高界面响应速度和增强服务器处理多个客户请求的能力。数据库管理采用oracle 和池化的连接技术,有效地维护连接数和利用计算机资源,使系统稳定地运行。本系统提供一对一聊天,一对多聊天,用户注册和登录,好友的搜索和添加,文件传输等功能。关键词:C/S;多线程;通信ABSTRACTIABSTRACTWith the development of the Internet, the communications between people is becoming fast and convenient. Instant communication system is based
5、 on the Internet, which is a fast, instant and accurate communication tool. Besides, the instant communication system has powerful functions like delivery-receiving text message, transmissions of videos and voices, and data transmission. It has been an important way to improve the connections betwee
6、n people and the transmission of information. It promotes the informatization construction of governments and institutions. Therefore, to develop instant communication system is of great importance.The ICS is based on the java platform. It uses the c/s architecture and the system interface construct
7、ed by swing of java. The communication between clients and servers and the communication between clients are based on communication protocol of tcp/ip and udp. Multithreading technology is used to improve the response speed of interface and the servers ability to deal with several clients requests a
8、t the same time. The oracle and connection pool technology are applied in the management of database which can effectively preserve connections and use the computer resources so that the system can operate steadily. The ICS provides one-to-one chatting and one-to-many chatting. It also satisfies the
9、 functions of user registration and login, quick friend discovery and file transmission.KEYWORDS: C/S; multi-thread;communication 咔嚓大学 2014 届本科生毕业论文 0 基于 java 的即时通讯系统电子信息工程,200911611234,增硁硁指导教师:罗锅锅第 1 章 绪论1.1引言交流对于人类社会及其每个成员都至关重要,良好的沟通交流环境和条件,能推动社会和经济更快地发展。随着社会的发展,互联网迅速普及,更加拉近了人们的距离,让人与人之间交流更加频繁。即时通
10、讯系统的出现,极大地丰富了人与人之间的交流方式,它不但提供简单的文字消息收发,还提供实时语音和视频交流,让沟通方式不再单调。除此之外还提供文件和多媒体数据的传输,方便了人们的工作也丰富了人们的生活。本文接下来就介绍基于 java 的即时通讯系统的功能和实现。1.2研究的目的和意义计算机技术、网络技术高速发展的今天,即时通讯方式日益受到人们的青睐。即时通讯工具在实现传输视频与音频信息,使协作成员可以远距离进行直观、真实的视音交流的同时,利用多媒体的技术,它还可以帮助使用者对工作中各种信息进行处理。目前即时聊天系统种类众多,功能也较为齐全。本课题现在所研究的即时通讯系统,其目标是定位于局域网,解决
11、个人或单位的沟通及协同的问题,提高工作效率。人们可以利用该通讯系统随时随地发送文字消息、进行多人群聊、消息群发、传送文件等。系统包括客户端程序和服务器端程序,支持局域网和 Internet。人们可以在内部网覆盖的任何地点、任何时间进行即时交流,真正实现人与人协同工作。使您不必花费大量的时间、金钱聚集到一个地方,通过网络,就能实现面对面的沟通,提高了效率。即时通讯带给了更大的互动性,人们在交流彼此的看法、意见时,发现采用你来我往的方式达到的效果最为明显。这就体现了互动性。通过使用及时通讯系统,大家不需要离开电脑,不需要借助其它额外的工具,就可以在线实时地交流工作。即 时 通 讯 的 最 大 特
12、点 是 在 网 上 进 行 信 息 的 实 时 交流 。 它 的 产 生 有 着 深 刻 的 社 会 和 技 术 的 原 因 。 大 凡 人 们 都 有 渴 望 社 交 、 获 得 社 会 尊 重 、 实 现 自我 的 需 求 , 这 正 是 即 时 通 讯 软 件 风 行 的 驱 动 力 。 而 物 质 文 明 的 日 益 发 达 所 带 来 的 副 作 用 , 又 使得 人 们 习 惯 地 与 周 围 的 人 保 持 距 离 , 以 致 人 们 更 愿 意 对 陌 生 人 敞 开 心 扉 。 与 传 统 通 讯 方 式 相 比 ,即 时 通 讯 具 备 快 捷 、 廉 价 、 隐 秘 性
13、高 的 特 点 , 在 网 络 中 可 以 跨 年 龄 、 身 份 、 行 业 、 地 域 的 限 制 ,咔嚓大学 2014 届本科生毕业论文 1 达 到 人 与 人 、 人 与 信 息 之 间 的 零 距 离 交 流 。 从 这 点 上 讲 , 即 时 通 讯 的 出 现 改 变 了 人 们 的 沟 通 方式 和 交 友 文 化 , 大 大 拓 展 了 个 人 生 活 交 流 的 空 间 。1.3 国内外发展状况即时通讯软件,几乎是每一个上网用户都必备的联络工具。即时通讯软件除了能够让您迅速地在网上找到自己的朋友和工作伙伴,还可以实时交谈和传递信息,而且,现在不少即时通讯软件还集成了文件共享
14、、语音聊天、网络会议等功能。截止到目前,全球约有近 3 亿多人使用即时通讯软件进行交流,正因为即时通讯软件拥有数以亿计的用户和迅速增长的市场,所以各个公司都盯上了中国这个潜在的最大市场,一时间,即时通讯市场硝烟四起。除了腾讯 QQ 和国外的几款著名即时通讯软件纷纷推出新版本,网易也推出了一种新的即时通讯软件网易泡泡。朗玛公司也推出了名为 UC 的通讯工具。即时通讯软件最早发布于 1996 年 11 月 15 日,以色列特拉维文的 Mirabilis Ltd.发表了一个题为E.T SURF HOME:MIRABILIS LTD. PROVIDES NEW SOLUTIONS FOR PEER-T
15、O-PEER INTERNET COMMUNICATIONS的新闻稿,同时发布了他们新产品 ICQ(I Seek You)的 Beta 测试版。这天标志着 Internet 上的第一个成热的即时通讯系统(Instant MessageSystem)的诞生。即时通讯服务在诞生之后的几年时间得到了迅猛发展,成为新增 Internet 用户的 3 个主要应用之一(WEB,电子邮件和即时通讯)。在国内,1999 年 2 月,深圳腾讯公司正式发布 OICQ99 beta build 0210,开通腾讯即时通讯服务。2000 年 5 月,腾讯 QQ 同时在线用户突破 10 万;2001 年 2 月 l0
16、日,腾讯 QQ 同时在线用户突破 100 万。2004 年 4 月份腾讯 QQ 同时在线人数最高记录已经突破了 600 万大关,现在腾讯公司正在把即时通讯系统往移动通讯方向扩展,如今已经将即时通讯与手机短信息(SMS)成功结合起来。即时通讯软件涉及和影响的领域已近越来越广,其竞争也越来越激烈。国内 QQ 最大的敌手朗玛 UC从 2001 年开始研发,2002 年的 12 月份 UC 正式发布,并且首创了很多技术:UC 是国内第一个做场景聊天的;UC 是第一个把同学录和校友录结合的;第一个把即时通讯与休闲游戏相结合的;第一个把发送动画与即时通讯相结合的。在一年的发展里,UC 一度达到峰值在线 3
17、0 万人,注册用户达到 7000 万。1.4相关技术介绍1.4.1 Java 及其多线程特点Java 是一种简单、安全、容易适用、面向对象、可移置、高性能、多线程的语言。 1、 简单性Java 语言简单高校,基本 Java 系统(编译器和解释器)所占空间不足 250KB 由于 Java 最初是为了对家用电器进行集成控制而设计的,因而具备简单命了的特征。咔嚓大学 2014 届本科生毕业论文 2 2、面向对象面向对象技术是现代工业的一次革新,提高了软件的模块化程度和重复适用率,缩短了软件开发时间,减低了卡发成本。在 Java 之前虽然已经有面向对象的程序设计语言问问世,但有些如 c+并不是完全的面
18、向对象,而是面向过程和面向对象的混合体。Java 则是完全面向对象的程序设计语言。3、安全性Java 是可以用在网路及分布环境下的网路程序设计语言。在网路环境下,语言的安全性变得更为重要。Java 提供了许多安全机制来保证其适用上的安全性。4、平台独立平台独立指程序不受操作平台的限制,可以应用在各种平台上。Java 源程序经过编译后生成字节码文件,而字节码与具体的计算机无关。只要计算机安装了能解释执行字节码的 Java 虚拟机JVM,就可以执行字节码文件,从而实现 Java 的平台独立性。5、多线程特点Java 具备内建的多线程功能,可以将一个程序的不同程序段设置为不同的线程,使各线程并发、独
19、立执行,提高系统的运行效率。一般来说,当运行一个应用程序的时候,就启动了一个进程,当然有些会启动多个进程。启动进程的时候,操作系统会为进程分配资源,其中最主要的资源是内存空间,因为程序是在内存中运行的。在进程中,有些程序流程块是可以乱序执行的,并且这个代码块可以同时被多次执行。实际上,这样的代码块就是线程体。线程是进程中乱序执行的代码流程。当多个线程同时运行的时候,这样的执行模式成为并发执行。多线程的目的是为了最大限度的利用 CPU 资源。 所谓的“并发执行” 、 “同时”其实都不是真正意义上的“同时” 。众所周知,CPU 都有个时钟频率,表示每秒中能执行 cpu 指令的次数。在每个时钟周期内
20、,CPU 实际上只能去执行一条(也有可能多条)指令。操作系统将进程线程进行管理,轮流(没有固定的顺序)分配每个进程很短的一段是时间(不一定是均分) ,然后在每个线程内部,程序代码自己处理该进程内部线程的时间分配,多个线程之间相互的切换去执行,这个切换时间也是非常短的。因此多任务、多进程、多线程都是操作系统给人的一种宏观感受,从微观角度看,程序的运行是异步执行的。 用一句话做总结:虽然操作系统是多线程的,但 CPU 每一时刻只能做一件事。1.4.2 Java 与 internetJava 语言取得成功的领域之一就是在网络编程方面.咔嚓大学 2014 届本科生毕业论文 3 Java 语言是在网络环
21、境下诞生的,所以 Java 语言虽然不能说是对于网络编程的支持最好的语言,但是必须说是一种对于网络编程提供良好支持的语言,使用 Java 语言进行网络编程将是一件比较轻松的工作。TCP/IP(传输控制协议/网间协议 )是 internet 的主要协议,定义了计算机和外设进行通信所使用的规则( 应用层,传输层,网络层,链路层 ).大多数基于 internet 的应用程序被看作 TCP/IP 协议的上一层. 如 : ftp, http, smtp, pop3, telnet, nntp 等。IP 地址 :TCP/IP 网络中的每台计算机都有唯一的地址-IP 地址。在 Java 中,有一个用来存储i
22、nternet 地址的类叫 InterAddress。在 Java 语言中,对于 TCP 方式的网络编程提供了良好的支持,在实际实现时,以.Socket 类代表客户端连接,以 .ServerSocket 类代表服务器端连接。在进行网络编程时,底层网络通讯的细节已经实现了比较高的封装,所以在程序员实际编程时,只需要指定 IP 地址和端口号码就可以建立连接了。正是由于这种高度的封装,一方面简化了 Java 语言网络编程的难度,另外也使得使用 Java 语言进行网络编程时无法深入到网络的底层,所以使用 Java 语言进行网络底层系统编程很困难,具体点说,Java 语言无法实现底层的网络嗅探以及获得
23、IP 包结构等信息。但是由于 Java 语言的网络编程比较简单,所以还是获得了广泛的使用。在客户端网络编程中,首先需要建立连接,在 Java API 中以 .Socket 类的对象代表网络连接,所以建立客户端网络连接,也就是创建 Socket 类型的对象,该对象代表网络连接,连接一旦建立,则完成了客户端编程的第一步,紧接着的步骤就是按照“请求-响应”模型进行网络数据交换,在 Java 语言中,数据传输功能由 Java IO 实现,也就是说只需要从连接中获得输入流和输出流即可,然后将需要发送的数据写入连接对象的输出流中,在发送完成以后从输入流中读取数据即可。Java 提供的网络功能有三大类: U
24、RL, Socket, Datagram。1、URL 是三大功能中最高级的一种,通过 URL Java 程序可以直接送出或读入网络上的数据。2、Socket 是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道。3、Datagram 是更低级的网络传输方式,它把数据的目的纪录在数据包中 ,然后直接放在网络上。咔嚓大学 2014 届本科生毕业论文 4 第 2 章 系统需求分析2.1系统可行性分析1、 经济可行性分析本系统的设计和实现背景是学生毕业设计,不注重直接的经济效益和其后的发展方向,也不参与任何商业性行为,只供少数人使用,所以安装一个免费版的 oracle 数据库和一台能
25、运行 oracle的机器即可,开发工具使用免费版的 eclipse,因此不存在经济可行性问题2、 技术可行性分析本系统是用 java 语言编写的,其界面设计运用了 java 的 swing 技术,由于涉及到网络通信,所以开发者必须对 tcp/ip 和 udp 两种通信协议有一定了解,并且还要能够熟练运用 java 的socket 网络编程和多线程技术。在数据库方面,本系统用到了 oracle 和数据库连接池技术,由于本人平时习惯用 java 编程,对以上几种技术都能熟悉运用,所以技术上可行。2.2系统功能分析即时通讯系统,意在为用户提供了一个安全快捷的即时信息交流平台。由于本系统的设计是面向校
26、园用户的,为了让老师和学生之间、学生与学生之间、社团与社团之间更好地进行沟通和协作,以提高其学习效率和,办事效率和活动组织效率,节省时间资源,本系统应该提供一下几个功能:1、 用户注册,通过填写个人信息,注册本系统,让朋友,同学更容易去发现你,了解你,找到你。2、 为了让沟通变得更加简单、快捷、明了,系统支持即时文字消息的收发。3、 建立群组讨论,让更多的人参与学习或其他重要事情的讨论对话中去,加强协作能力。4、 添加和搜索好友 5、 文件实时传输2.3系统架构选择在应用开发领域中,目前系统平台的体系结构主要有两种,即 C/S(Client/Server)结构和B/S(Brower/Server)结构。