摘 要
在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。随着网络聊天一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具。Java是一种程序设计语言,它具有简单的、完全面向对象以及与平台无关的结构,也具有可移植性、高性能和安全性,并提供了多线程的功能,而Java语言最大的成功之处在于它的平台无关性和具有强大的网络编程功能,基于Java网络编程的强大功能,本人将用Java编写一个网络聊天系统。
论文首先论述了系统的开发背景,并对所用到的开发工具与关键技术做了简单的介绍。接着对系统的研究意义,研究现状及设计目标进行分析,通过对系统需求和可行性进行分析,确定了系统的功能模块,并画出相应的功能结构图、模块图和数据流图。其次按系统总体设计的结果,对系统中的数据库进行结构设计。
一般来说,聊天工具大多数由客户端程序和服务器程序,外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式,通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的,而Java提供的多线程功能,用多线程可完成多点对多点的聊天。数据库管理系统用SQL Server2000,完成并通过JDBC-ODBC桥访问数据库。聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息,传输文件等功能。界面设计细分化,方便使用者操作和理解。服务器实现了查询和修改等功能,程序逻辑联系较紧密。
关键词:JAVA,C/S,SQL Server 2000, 多线程, 数据库管理系统
ABSTRACT
More and more developed in the network today, people rely on more and more networks, and can not leave with out it. This caused the chat materials become more numerous, as the overseas ICQ system, the OICQ system that invented by Tencent Co., and so on. So we create a network chat medium just like the QQ.Java is a programming language with the simple construction which is completely object-oriented 。Java also possess the portability, high performance and security, and provide the multi – thread function. The best success is its and its strong network programming function, base on this, I will use Java to write a network chat system.
Firstly, the paper discussed the development background of the system, and made a briefly introduction to the development tool and key technologies. Then analyzed the system’s research significance , research present situation and project objective .According to the requirement analysis and feasibility analysis ,it can confirm the system’s functional module and draw corresponding functional configuration chart ,module chart and data stream chart. On the basis of the result of system designing, the paper design database by structured design method.
Generally speaking, most chat medium consist the client program, server program and the server which is use to content the database. This system adopt client/server pattern and the Socket class provide by Java to communicate the client and server. Because of chat is many to many, the multithreading function can implement the many-many chat, database management system use SQL Server2000 and JDBC-ODBC bridge to visit the database.
When chat system is achieved, it can possess functions like chat in a many-many way, add and delete the intimate, the new user’s registration, and sending and receiving message, transferring files and so on. The refinement of interface designing would facilitate user operation and understanding. The contact surface has the thin differentiation designs; modules have realized the functions such as inquiry, revision and so on. The logic relationship in this program is closed.
Keyword: Java, Multithreading, Client/Server, SQL Server2000,
Database Management System
目 录
1.3.3 数据库Microsoft SQL-Server 2000 简介
第1章 绪论
1.1 课题选择的背景
信息时代的到来引发了一场知识和信息革命,计算机和现代网络技术的广泛应用极大地促进了社会经济的发展,同时也带来了一些新兴产业的发展,比如聊天软件。随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式已经难以满足人们的交流的需求了,网络聊天已经慢慢成为人们生活的一部分,呈现出良好的势头和广阔的发展前景。在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。同时,即时通信系统对现代企业也有着重大意义,它能实现快速人际交流、数据共享,从而提高效率和生产力。实时通信为诸多企业开拓了网络应用的新领域。自从它诞生以来,以实时交互、资费低廉等优点,受到广大个人用户的喜爱,已经成为网络生活中不可或缺的一部分。越来越多的企业已开始认识到即时通信工具能够带来极高的生产力,并借助它的应用,来提高业务协同性及反馈的敏感度和快捷度。网上聊天系统是为人们之间进行交流和联系提供的一个平台。通过提供完善的网上聊天系统服务,可以达到增进彼此之间的了解,增进人与人之间的感情交流。因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。于是出现了QQ、UC 等聊天工具,然而QQ、UC 等聊天工具虽然方便、实用,但是,娱乐功能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用于即时通讯的专用工具。目前,用于实现单一的即时通讯的软件实在太少,为此,我们决定开发一个专用于实现多台计算机之间即时通讯的软件,以方便多台计算机之间信息的快速交流。
1.2 课题选择意义
计算机越来越成为我们生活中的重要工具,自从1968年世界上第一个计算机网络--ARPA网(美国国防部高级研究计划网)投入运行以来,计算机网络技术在全世界范围内迅速发展,犹如雨后春笋,各种网络纷纷涌现。不同国家的计算机网络相互连接,形成跨国计算机网络,促进了世界各国之间的科技、文化和经济交流。在电子商务的应用中,计算机网络作为基础设施,将分散在各地的计算机系统连接起来,使得计算机之间的通讯在商务活动中发挥了重要的作用,从此计算机的作用不再那么单调,现在Internet把几乎全球的服务器相互连接起来,这样不仅使网络上的计算机之间进行相互访问并下载对自己有用的资源,还可以用来写信、听音乐、看电视、通过可视电话进行通信,通过Internet网进行信息查询、网上购物等。计算机正在改变我们的通信、工作和娱乐的方式。
1.3 系统开发技术简介
1.3.1 Java简介
Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。它以C++为基础,但是却是一个全新的软件开发语言。Java是一个简单,面象对象,分布式,解释性,强壮,安全,与系统无关,可移植,高性能,多线程和动态的语言-------这是 Sun给Java的定义。
Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。Java 对开发者具有不可估量的价值,使他们可以:
·在一个平台上编写软件,然后即可在几乎所有其他平台上运行
·创建可在 Web 浏览器和 Web 服务中运行的程序
·开发适用于在线论坛、存储、投票、HTML 格式处理以及其他用途的服务器端应用程序
·将采用 Java 语言的应用程序或服务组合在一起,形成高度定制的应用程序或服务
·为移动电话、远程处理器、低成本的消费产品以及其他任何具有数字核心的设备编写强大而高效的应用程序
Sun公司的口号就是"网络就是计算机",Java能使所有东西从桌面计算平稳的转变为基于网络的计算,它是专门为此而建立的,并显然是为了完成这个任务而来的。使用Java,我们可以相对轻松的一天编写一个有条理的网络程序。今天,Java的网络功能正在飞跃发展,不断有新的特性增加到这个有价值的基础上,JavaSoft实验室正在不断努力使Java更加完善。
1.3.2 JDBC技术简介
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,JDBC是Java的开发者Sun的Javasoft公司制定的。它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。
有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
ODBC在Windows系列平台应用程序中和JDBC在Web和Internet应用程序中的作用的作用类似。ODBC(OpenData Base Connectivity),称为开放式数据库互联技术,是由Microsoft公司倡导并得到业界普遍响应的一门数据库连接技术。 JDBC现在可以连接的数据库包括:xbase、Oracle、Sybase、Aceess以及Paradox等。
JDBC的工作机制 :JDBC定义了Java语言同SQL数据之间的程序设计接口。JDBC有一个非常独特的动态连接结构,它使得系统模块化。使用JDBC来完成对数据库的访问包括以下四个主要组件:Java的应用程序、JDBC驱动器管理器、驱动器和数据源。
JavaSoft公司开发了JDBC API,JDBC API是一个标准统一的SQL数据存取接口。 JDBC在Internet中的作用与ODBC在Windows系列中的作用类似。它为Java程序提供了一个统一缝地操作各种数据库的接口,程序员编程时,可以不关心它所要操作的数据库是哪个厂家的产品,从而提高了软件的通用性,而且在Internet上确实无法预料你的用户想访问什么类型的数据库。只要系统上安装了正确的驱动器组,JDBC应用程序就可以访问其相关的数据库。
1.3.3 数据库Microsoft SQL-Server 2000 简介
Microsoft SQL-Server(简称 SQL-Server)是微软公司推出的一个高性能的关系型数据库管理系统,随着其产品性能的不断提高,使之在数据库系统领域中占有重要地位。Microsoft SQL-Server 2000是继SQL-Server 6.5和SQL-Server 7.0以后,推出的又一改进的关系型数据库管理系统,它能使用户快捷地管理数据库和开发应用程序。SQL-Server 2000使用了最先进的数据库结构,与Windows DNA紧密集成,具有强大的Web功能,它可以利用高端硬件平台以及最新网络和存储技术,可以为最大的Web站点和企业应用提供优良的扩展性和可靠性,使用户能够在Internet领域快速建立服务系统,为占领市场赢得宝贵的时间。同时,SQL-Server 2000还为用户提供了重要的安全性功能的增强,为用户的数据安全提供了可靠的保证。另外,SQL-Server 2000在数据库服务器自动管理技术方面处于数据库领域的领先地位,它可以使用户免去繁琐复杂的工作量,从而又精于处理更重要的问题,使系统在商业战略上占得先机。SQL-Server 数据库系统特点:与Internet高度集成;高伸缩性和适应性;企业级数据库功能强。
存储过程是存储在服务器上的预先编译好的SQL语句,可以在服务器上的SQL Server环境下运行[12]。使用存储过程有如下的好处:执行时间短;客户/服务器开发分离;安全性高。SQL-Server 2000工具界面与标准Windows 界面非常类似,具有菜单栏、图标、树状视图控件、单选按钮等。这些熟悉的界面使以前即使从没有见到过这些应用程序的人也能够很快地了解一些基本的功能。
1.3.4 多线程介绍
Java 支持内置多线程编程。多线程程序包括两条或两条以上并发运行的部分。程序中每个这样的部分都叫一个线程,每个线程都是独立的执行路径。因此,多线程是多任务处理的一种特殊形式。
多任务处理有两种截然不同的类型:基于进程的和基于线程的。进程本质上一个正在执行的程序。因此,基于进程的多任务处理的特点是允许你的计算机同时运行两个或更多的程序。举例来说,基于进程的读任务处理使你在运行文本编辑器的时候可以同时运行Java 编译器。在基于进程的多任务处理中,程序是调度程序多分派的最小代码。也就是说,进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源。
在基于线程的多任务处理环境中,线程是最小的执行单位。线程是进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。这意味着一个程序可以同时执行两个或多个任务的功能。例如,一个文本编辑器可以在打印的同时格式化文本。所以,多进程程序处理大局问题,而多线程程序处理细节问题。
多线程程序比多进程程序需要更少的管理开销。进程是重量级的任务,需要分配它们自己独立的地址空间。进程间通信是昂贵和受限的。进程间的转换也是很需要花费的。另一方面,线程是轻量级的选手,它和进程一样拥有独立的执行控制,由操作系统负责调度。区别在于线程没有独立的存储空间,而是和所属进程的其他线程共享一个存储空间,因此,线程间通信是容易的,线程间的转换也是低开销的。当Java 程序使用多进程的任务处理环境时,多进程的程序不受Java 的控制,而多线程则受控于Java。
多线程可以帮会你写出CPU 最大利用率的高效程序,因为空闲时间保持最低。这对Java 运行的交互式的网络互联环境至关重要,因为空闲时间是公共的,举个例子来说,网络的数据处理传输速率远低于计算机处理能力,本地文件系统资源的读写速度远低于CPU 的处理能力,当然,用户输入也比计算机慢的多。在传统的单线程环境中,你的程序必须等待每一个这样的任务完成以后才能执行下一步—尽管CPU 有很多空闲时间。多线程是你能够获得并充分利用这些空闲时间。
·多线程编程简单,效率高(能直接共享数据和资源,而多进程却不能)
·适合于开发多种交互接口的程序
·减轻编写交互频繁,涉及面多的程序的困难
在本系统中,设置后台线程处理服务器和客户程序的通信。服务器资源以轻量级的线程提供,和多个客户线程并发连接通信。这样可以减轻服务器端的开销,同时保证了多个用户端连接能够得到快速而高效的服务。
第2章 系统分析
2.1 系统需求
随着网络的迅速发展,通过即时通讯工具进行相互交流,沟通会对用户带来很多的方便,像现在很流行的QQ、MSN、UC等,它们为用户们之间的沟通带来很多的方便的,但是这些即时工具在企业或者学校禁止用户访问外网的时候,这些即时的通信工具就不能使用了,用户之间就不能很方便的沟通交流了,可以通过自己设计一个即时通讯工具,自己建立服务器,放在内部网络,在用户不能访问外部网络的时候,可以很方便用户之间进行沟通交流。
2.1.1 系统的特点分析
基于JAVA的网络聊天系统基于C/S 模式实现,采用Java 语言编写。所有用户都通过服务器端中转消息,这也是现有大多数聊天系统所采用的模式。本系统真正地实现了多点聊天的功能,可以在多点间快速传递信息。同时,它体积小,功能单一,界面简洁美观,容易上手,只要简单阅读服务器端和客户端的帮助文档即可完全掌握它的使用方法,同时该系统是网络聊天,特别是局域网聊天不可多得的好帮手。
2.1.2 网络聊天系统需要解决的问题
首先,网络聊天系统是一个比较复杂的系统,良好的架构设计非常的重要:C/S 模式是较为成熟的软件运行模式,基于局域网设计,运行速度快,安全性高,为当今主要的软件所采用的模式。不好的架构会在系统实现或者维护阶段系统的扩展带来很多麻烦。
其次,服务器的承载能力,如何处理多个用户的同时登录和请求,好的设计会使系统在很多并发用户登录的时候不至于系统崩溃。
最后,服务器和客户端的通信协议制定比较困难,如何制定一套简单,并且易于客户端和服务器之间理解的通信规则非常重要,否则会在服务器和客户端通信设计的时候带来很多的问题。
2.2 系统设计思想
本系统的设计思路如下:
(1) 系统采用模块化设计,针对不同的应用设计不同的模块,并对这些模块都进行集中式管理,作为应用程序有较强的可操作性和扩展性。
(2) 合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性,尽量保证低耦合,高内聚。
(3) 采用封装的思想,根据模块的不同情况进行类的封装,并重用各个模块,并合理利用各种设计模式,为以后维护带来方便。
2.3 系统实现功能分析
本次设计主要实现了以下几个功能:
● 客户端功能设计如下:
(1)身份认证,该模块主要实现用户的登陆认证,以及服务器代理IP和端口的设置,并检查数据的合法性。
(2)聊天功能,该模块主要用Socket实现不同用户之间消息的的发送,并且不仅仅传文本格式的数据,也可以传输图片,需要自己封装并自定义消息流,并能够识别显示。
(3)文件传输,该模块主要实现不同用户之间进行文件的传输。
● 服务器端功能设计如下:
(1)在线用户统计,该模块主要实现在线用户的查看显示,并可以控制其在线状态,强迫特定用户下线。
(2)日志记录,该模块主要记录客户端用户上线、下线情况,并存储下来。
(3)发布信息,该模块主要服务器可以发布系统信息,使客户端可以接收。
2.4 系统开发及运行环境
(1) 系统开发平台:本系统采用eclipse 及WINDOWS XP设计。
(2) 硬件环境:
运行本系统的硬件基本要求如下:
CPU:Intel P3及以上;
内存:256MB及以上;
硬盘:40GB及以上。
(3) 数据库管理系统软件:SQL Server 2000。
第3章 系统总体设计
3.1 总体构架
基于Java的网络聊天系统设计与实现主要考虑三个个方面的设计,即服务器模块设计,服务器客与客户端通信规则设计和客户端模块设计,本系统整体构架如图3.1所示。
图3.1 系统整体构架图
图5.7 用户登陆后主界面
如果您在计算机领域有任何疑虑或不确定的地方,请毫不犹豫地与老师交流噢,我们期待着为您提供有针对性的建议和指导。您的问题和讨论对我们来说都非常重要。