摘要随着Internet的飞速发展,网络聊天以其操作简单、方便快捷、私密性好等优点已经迅速发展成为最普遍的网络交流方式之一,越来越受到人们的青睐,丰富了人们的网上生活。
开发并实现具有自身特色的网络聊天系统具有实际应用价值。
本网络聊天系统基于Java应用程序设计,以Client/Server为开发模式,以Eclipse为开发环境,以MySQL为后台数据库,利用JDBC连接数据库。
系统主要包括服务器模块和客户端模块,服务器模块能够对客户端发来的用户信息进行匹配、读取和转发;客户端模块能够进行注册、登录、聊天和文件传输。
系统不但实现了点到点的聊天,还利用Java提供的Socket类和多线程功能,在单个程序中同时运行多个不同进程,从而实现多点对多点的聊天。
总之,该聊天系统具有开放性,实时性,多话题交错等特点,方便了人们网上交流。
【关键词】网络聊天服务器模块客户端模块 SocketABSTRACTWith the rapid development of Internet, network chat with its simple operation, convenient and gond privacy has quickly become the most popular way of communication networks, more and more people like it, enrich people's online lives. Development and Realization of the network chat system with its own characteristics and has practical application value.The Internet chat system is based on Java application, designed by Client / Server as the development of models, as Eclipse development environment, MySQL as the backend database, and using JDBC to connect database. The system includes server modules and client modules, server module can match users'data, read and forward the information which is sent by client; client module to regist, login, chat and file transfer. The system not only achieves peer-to-peer chat, but also use the Java provids Socket class and multi-threading capabilities, in a single program run different processes at the same time, in order to achieve multipoint chat.In short, the chat system is open, real-time and multi-topic staggered features, easy for people to communicate online.【Key words】Network Chat Client Module Server Module Socket目录前言 (1)第一章系统开发工具简介 (2)第一节客户机/服务器模型 (2)第二节JA V A简介 (3)第三节Socket简介 (4)第四节Eclipse简介 (7)第五节MySQL简介 (8)本章小结 (9)第二章系统分析 (10)第一节可行性分析 (10)第二节业务流分析 (11)第三节需求分析 (11)一、系统设计目标 (11)二、系统功能需求 (12)本章小结 (13)第三章系统概要设计 (14)第一节系统总体描述 (14)第二节模块设计 (15)第三节数据库设计 (16)一、设计原则 (16)二、具体步骤 (17)本章小结 (18)第四章系统实现 (20)第一节数据库模块实现 (20)一、数据流图 (20)二、数据库的连接 (20)第二节注册模块实现 (21)第三节登录模块实现 (23)第四节聊天模块实现 (24)第五节文件传输模块实现 (25)本章小结 (27)第五章系统测试 (28)第一节服务器模块测试 (28)第二节注册模块测试 (29)第三节登录模块测试 (30)第四节聊天模块测试 (31)第五节文件传输模块测试 (32)本章小结 (34)总结 (35)致谢 (36)参考文献 (37)附录 (38)一、英文原文 (38)二、英文翻译 (41)前言随着互联网的快速发展,网络聊天软件以它的实时性、高效率和低成本的特质充当了信息交流的媒介,并逐渐成为网络商圈和生活商圈中不可或缺的组成部分[1]。
网络聊天工具实现了“沟通无极限”,它打破了办公室里上级与下级直接的等级限制,也打破了长辈与晚辈之间的时间限制,也打破了异地之间的距离限制。
同时人们对于网络聊天工具的友好的界面和快捷的操作方式也越来越高。
大家都知道,网络上最常用的交流工具是腾讯QQ,QQ来源于OICQ(open icq),ICQ是“I seek you”的简称,是“我找你”的意思。
QQ引用了ICQ的功能即即时通信,我们只要将对方加为好友,不管对方是否在线,我们都可以向对方发送信息,无论对方在哪里,只要登陆QQ,他就能够看到我们给他发的信息,我们就能够随时随地的和对方进行信息交流[2]。
随着网络聊天工具的不断完善,它的功能越来越多样化,由最初的文字交流发展成现在的视频、语音交流,同时也提供了文件的发送和共享功能。
其中不难发现,现在的网络聊天已经不再是一个简单的沟通工具,而是一个信息资讯、交流互动、娱乐的工具。
随着技术的发展,网络聊天工具具有即时性、高效性、安全性、功能上较强的延展性,能够提供方便、快捷的交流[3][4]。
本系统主要分析了网络聊天系统应该具备的功能、运行方式和实现方式,开发出一个基于Socket的网络聊天工具。
该系统主要实现功能包括:注册、登录、聊天和文件的传输。
第一章系统开发工具简介第一节客户机/服务器模型一、C/S结构简介客户机/服务器模型,又称为Client/Server模型,简称C/S架构[5]。
C/S 计算技术在信息产业中占有重要的地位。
它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
客户端的任务是将用户的要求提交给服务器程序,再将服务器程序返回的结果以特定的形式显示给用户。
服务器程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。
二、C/S特点C/S是客户端/服务器,一般适合于软件开发,对客户端的计算机配置要求比较高,客户端也需要安装软件,比如QQ。
C/S架构软件的特点如下:应用服务器运行数据负荷较轻。
C/S体系结构由客户应用程序和数据库服务程序组成,二者分别称为前台程序和后台程序。
一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序当需要对数据库中的数据进行任何操作时,客户程序就会自动寻找服务器程序,并向其发出请求,服务器程序根据规程做出响应,返回结果,应用服务器运行数据负荷较轻。
数据的储存管理功能较为透明。
在数据库应用中数据的储存管理功能是由服务器程序和客户应用程序分别独立进行的。
前台应用可以违反的规则,并且通常把那些不同的运行数据,在服务器程序中不集中实现。
因此对于工作在前台程序上的最终用户是“透明”的,他们无须干涉背后的过程就可以完成自己的一切工作。
在C/S提醒体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。
第二节 JAVA简介Java是由SunMicrosystems公司于1995年5月推出的java程序设计语言和Java平台的总称。
用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、internet计算。
从此Java被广泛接受并推动力web的迅速发展,常用的浏览器限制均支持Java applet。
Java平台由Java虚拟机(Java Virtual Machine)和Java应用编程接口(Application Programming Interface,简称API)构成。
Java应用在编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。
在硬件和操作系统平台上安装一个Java平台之后,Java应用程序就可运行。
Java应用编程接口已经从1.1X版本发展到1.2版。
目前常用的Java平台基于Java1.4,最近版本为Java1.7。
Java分为三个体系J2SE(Java2 Standard Edition),J2EE(Java 2 Platform enterprise Edition),J2ME(Java 2 Micro Edition)。
Java是一种具有简单性(Java语法是C++语法的一个“纯净”版本)、面向对象(面向对象是一种程序设计技术,它将重点放在数据和对象的接口上)、网络技能(Java有一个扩展的例程库,用于处理HTTP和FTP这类的TCP/IP协议)、健壮性、安全性(Java可以构建防病毒、防篡改的系统)、体系结构中立、可移植性、解释型、高性能、多线程的动态语言[6]。
Java的I/O建立于流(stream)之上。
输入流读取数据;输出流写入数据。
不同的流类如java.io.FileInputStream和.TeletOutputStream读写某一种数据源。
但是所有输入流都有相同的基本方法,所有输入流也使用相同基本方法来读取数据[7]。
Java中的数据流类型有两种:输出流(OutputStream):输出流数据流经数据从程序送到数据接收者,如可以向显示器屏幕或者文件传输数据。
输出流只能写不能读。
输入流(InputStream):程序从外部设备写数据时,使用输入流。
输入流将数据从数据源传递给程序,可以从键盘或者文件中获得数据。
输入流只能读不能写。
第三节 Socket简介Socket通常被称为“套接字”,用于描述IP地址和端口[8]。