第1章绪论1.1 论文背景及课题来源随着网络技术的发展和普及,Internet已经成为人们获取有关信息和相互交流的重要途径之一,越来越多的机构和组织开始利用网络资源传递、发布、收集和管理信息。
这对各种类型的网络提供一次很大的挑战与机遇,特别是通过网络进行信息交互的这种活动,更加使网络的经营方式充满了活力和机动性[5]。
基于C/S模型的Java聊天室是应用于网络交流领域的系统,它的主要特点有:(1)通用性:聊天室系统在各种各样的网络中均可以运行,系统具有较高的可移植性和使用性;(2)实用性:系统具有良好的人机界面,便于各类使用者操作,提供了人性化的服务;(3)及时性:通过网络的连接,系统双方的交流可以在短期内进行,相比与传统面对面的交流节省不少时间[15]。
聊天室中聊天内容的及时性和准确性是极其重要的,它主要针对当今社会快节奏生活,人们没有很多时间来等信息。
本系统提供的功能便于系统使用双方的信息交流,有效的提高了使用者的使用效率,缩短了使用者的使用时间[6]。
1.2 本课题在国内外的发展状况随着网络技术的发展和普及,多数网站纷纷利用自己的网络资源建立聊天室,并为客户提供各种各样便捷的服务。
中国的一些龙头网站,如sina,有很多聊天室,供国内外的不同的人们进行不同话题的讨论,不仅将会员发展由国内延伸到国际,更是为提高自身的知名度提供了方便[2]。
聊天室的开放性、信息资源的多样性可为网站发展提供优良的广告宣传和商品推广,这是其他网站活动方式所无法比拟的,聊天室趋向方便化、快捷化是各大网站成长的必然经历的阶段[8]。
1.3 应解决的问题及系统开发意义本系统针对聊天室用户的需要,建立了客户端和服务器端。
主要解决的问题包括:(1)服务器端和客户端要实现界面化,并且界面尽量人性化。
(2)服务器端能够正确的启动,并且时刻监视客户端,保持与客户端的连接。
(3)客户端能够快速准确的连接上服务器端,发送的信息经服务器端可以转发给其他客户。
(4)异常处理,对于用户的不正确的操作系统应该有提示。
基于C/S的Java聊天室系统它的开发意义在于为人们之间相互交流提供了一个快捷、方便的应用平台。
大型网站可以通过聊天室来提高自身的知名度,增加的访问流量。
第2章开发工具及相关技术介绍2.1 Java与Socket简介Java语言是Sun公司于1991年创建的一种新的程序设计语言。
该语言与C/C++等传统程序设计语言不同,具有突出的平台独立性,高度的可靠性和安全性特点。
1999年6月SUN公司重新定义了Java技术的结构,将Java2平台分为三个版本:标准版(J2SE),企业版(J2EE)和微缩版(J2ME)。
目前,Java技术除了沿着J2SE,J2EE,J2ME三种技术为主脉络迅速发展外,还密切关注Internet环境下各种新型信息技术的发展,并能够迅速与这些新技术融合,积极支持这些新技术应用的开发[1]。
Socket是Java中需要编写较低层次的网络通信程序(例如Client/Server应用程序)时提供的一种通讯机制。
Socket是两个程序进行双向数据传输的网络通信的端点,一般由一个地址加上一个端口号来标识。
每个服务程序都在一个众所周知的端口上提供服务,而想使用服务的客户端程序则需要连接该端口。
通过Socket的数据是原始字节流信息,通信双方必须根据约定的协议对数据进行处理与解释[15]。
Socket通信机制提供了两种通信方式:有连接方式(TCP)和无连接方式(UDP数据报)。
有连接方式中,通信双方在开始时必须进行一次连接过程,建立一条通信链路。
通信链路提供了可靠的,全双工的字节流服务。
无连接方式中,通信双方不存在一个连接过程,一次网络I/O以一个数据报形式进行,而且每次网络I/O可以和不同主机的不同进程进行。
无连接方式开销小于有连接方式,但是所提供的数据传输服务不可靠,不能保证数据报一定到达目的地[14]。
Java的有连接通信采用流式I/O模式。
Socket是两个进程间通信链的端点,每个Socket有两个流:一个输入流和一个输出流。
只要向Socket的输出流写,一个进程就可以通过网络连接向其他进程发送数据;同样,通过读Socket的输入流,就可以读取传输来的数据[9]。
有连接通信一般要经历以下四个基本步骤:(1)创建Socket,建立连接;(2)打开连接到Socket的输入/输出流;(3)按照一定的协议对Socket进行读/写操作;(4)关闭Socket。
第(3)步是程序员用来调用Socket和实现程序功能的关键步骤,其他三步在各种程序中基本相同[5]。
2.2 JBuilder5介绍JBuilder5是美国Borland公司最新推出的遵循SUN公司J2EE标准的集成开发工具,是目前使用最广泛的Java开发工具之一。
JBuilder作为业界领先的Java开发工具,在集成了Tomcat并支持WebLogic的同时,其套装版更是集成了DreamweaverUltraDev,Rational Rose等产品,JBuilder5提供了可视化的集成开发工具,支持开发人员向导极大地简化了开发人员的工作,使开发更为快捷,方便[12]。
JBuilder5是一组全面的高效率工具,使用Java编程语言创建可伸缩的,高性能的和具有不依赖于平台性能的应用程序。
由于可伸缩性和基于组件,JBuilder可以开发所有级别的应用工程,从Apple到连接企业级的,分布式的,多层解决方案的网络数据库应用。
JBuilder5环境是用纯Java编写。
任何Java编写的程序都可以在JBuilder上运行、调试和工作[3]。
2.3 C/S模型介绍C/S是Client/Server的缩写,即客户机/服务器技术,也可以称为C/S模型。
很显然,C/S技术有以下几个基本特点:(1)C/S技术一定包含两个部分,一个作为用户接口的前端,另一个作为共享资源接口的后端。
前端被称为客户端,后端被称为服务器端。
客户进程包含逻辑和提供用户接口,服务进程充当一个管理共享资源的软件引擎,这些共享资源可以是数据库,打印机,调制解调器和处理机等。
(2)前端与后端的任务对计算机资源有完全不同的要求,这些计算机资源包括:处理机速度,内存,磁盘速度,容量,输入输出设备等。
(3)客户机与服务器由于可能基于完全不同的硬件和操作系统,所以它们之间的交流可能完全通过一套标准的已定义的API与RPC。
(4)可伸缩性是C/S系统的一个很重要特性。
无论是水平伸缩还是垂直伸缩都有很出色的表现。
在这里,水平伸缩(Horizontal scaling)意味着方便地添加和删除客户工作站。
垂直伸缩(Vertical scaling)意味着移植到一个更大更快速的服务器或多服务器时,即服务的升级和集群都会比较方便[4]。
C/S软件技术是一种通用的,基于消息的技术。
在本论文中,我们这样描述C/S,网络上的一台计算机向网络上的另外一台计算机请求一个进程或数据,如图2-1所示。
图2-1 C/S技术模型Client/Server 结构的优点是速度快, 缺点是当Server 进行更新时, Client 也必需更新[6]。
2.4 用Java实现Socket模型首先,我们先介绍一下Socket的运行过程。
通常在服务器的指定端口被绑定一个Socket,此时服务器只是处于等待状态,监听客户的连接请求。
这个过程如图2-2所示。
图2-2 服务器监听客户的连接请求服务器一旦接收到客户机的连接请求,服务器选择一个新的端口并绑定一个新的Socket与客户端建立的Socket对,这个过程如图2-3所示。
图2-3 服务器处理连接请求对客户机来说,连接请求被接受,客户端的Socket便被成功创建了,Socket通信便可以开始进行。
由于Server端的输出流是服务端的输入流,Server端的输入流是服务器的输出流,反之亦然,所以,Client与Server可以通过读写各自Socket进行交流。
下面我们来看看在Java里对Socket的运行过程实现。
服务器使用ServerSocket类来处理客户机的连接请求。
当客户机连接到服务器所监听的端口时,ServerSocket将分配一个新的Socket对象。
这个新的Socket对象将连接到一些新端口,负责处理与之相对应客户机的通信。
然后,服务器继续监听ServerSocket,处理新的客户机连接。
[13]客户机首先创建一个Socket对象,用于和服务器的通信。
之后需创建两个对象:DataInputStream和PrintStream,前者用于从Socket的InputStream输入流中读取数据,后者则用于向Socket的OutputStream的写数据[11]。
2.5 Java中的线程模型简介线程是程序中的一个执行流。
一个执行流是由CPU运行程序代码并操纵程序的数据所形成的。
因此,线程被认为是以CPU为主体的行为。
在Java中线程的模型就是一个CPU、程序代码和数据的封装体。
Java中的线程模型包含三部分。
(1)一个虚拟的CPU。
(2)该CPU执行的代码。
(3)代码所操作的数据。
线程模型在Java中是由ng.Thread类进行定义和描述的。
程序中的线程都是Thread的实例。
因此用户可以通过创建Thread的实例或定义并创建Thread子类的实例建立和控制自己的线程序[7]。
2.6 SQL SERVER 2000简介Sql Server 2000 是微软公司推出的新一代关系数据库管理系统,它继承了Sql Server 7.0版本的优点,同时又增加了许多新的功能,具有功能强大、使用方便、可伸缩性强、与相关软件高度集成等特点。
一经推出,就受到了专业人士的好评,目前已经成为web 数据库系统中较为常用的一个数据库系统。
Sql Server 2000可运行在windows 98/NT/2000/XP等多种操作系统下[10]。
Sql Server 2000的重要管理工具:(1)服务管理器可以通过服务管理器启动、停止、暂停Sql Server 服务器的相关服务。
当操作服务器中的数据时,应该首先确保该服务器正常启动了相应的服务[13]。
(2)企业管理器企业管理器提供了一种图形化界面来操作数据库对象,在该界面中可以进行数据库、表等数据对象的创建、查询、修改、删除等操作,可以完成Sql Server 2000中绝大多数的管理工作。
(3)查询分析器查询分析器是运行、测试用户的Transact-sql 语句、批处理和脚本的场所。
Transact-sql(又称为t-sql)是Sql Server 2000在标准的SQL语句上进行了扩充的语言,是交互式的结构化查询语言,能够完成对Sql Server 2000数据库的所有操作。