基于 Socket 的网络聊天系统开发与设计
摘
要
近年来随着计算机技术的飞速发展,特别是 Internet 技术的发展,已经深刻
的改变到了人们生活的方方面面。这时过去的种种陈旧的通讯方式,都已经不能
满足现代生活的需要。人们希望能够用更低廉的价格,更加方便快捷的方式,来
实现即时通讯。这时开发一套基于 Internet 技术的网络聊天系统变得尤为重要。
本人以基于 Java 语言开发的网络聊天系统为实践基础,详细的介绍了聊天
系统的功能设计和界面逻辑结构。最终实现了一个可以实现私聊、群聊、传送文
件的网络聊天系统。本次设计主要以 Socket 网络通讯作为基础,并以 Object 作
为通讯载体,同时运用了一定的通讯协议知识开发完成。在界面方面,采用的是
Java 中的 Swing 技术来实现。为了实现多用户的连接,在服务器端将采用多线程
的技术来实现。
关键词:Java
Socket 通讯协议 Swing 多线程
Socket-based web chat system development and design
Abstract
Recent years, with the rapid development of computer technology, especially
Internet technology, has profound change to all aspects of people's lives. At this time
all the old past, means of communication, have been unable to meet the needs of
modern life. People want to use more low cost, more convenient and efficient way to
achieve real-time communications. Then develop a network based on Internet
technology, chat system becomes particularly important.
I developed Java-based chat system based on practice, detailed description of the
chat function of the system design and interface, logical structure. Ultimately can
achieve a whisper, group chat, send files online chat system. This design mostly
Socket network communication as the basis, and with Object as the communication
carrier, while the use of a certain protocol to complete the knowledge development. In
the interface, the use of the Java in the Swing technologies. To achieve multi-user
connection, the server will use the technology to implement multithreading.
Keywords : Java
Socket
Communication protocol
Swing
Multithreading
目录
一.绪论.......................................................................................................................... 5
1.1 课题背景............................................................................................................. 5
1.2 课题研究内容及意义......................................................................................... 5
1.3 系统相关技术介绍............................................................................................. 6
1.3.1 Java 语言概述...............................................................................................6
1.3.2 TCP/IP 协议.................................................................................................. 7
1.3.3 Socket 编程....................................................................................................9
1.3.4 Swing 简介...................................................................................................11
1.3.5 多线程技术介绍........................................................................................ 12
二.系统需求分析........................................................................................................ 16
2.1 需求分析.......................................................................................................... 16
2.2 可行性分析...................................................................................................... 17
2.3.1 社会可行性................................................................................................ 17
2.3.2 用户可行性................................................................................................ 17
2.3.3 技术可行性................................................................................................ 17
2.3.4 经济可行性................................................................................................ 18
2.3 系统开发环境.................................................................................................. 18
三.系统总体设计........................................................................................................ 18
3.1 客户端与服务器的通信.................................................................................. 18
3.2 客户端与客户端的通信.................................................................................. 19
3.3 系统的架构模式.............................................................................................. 20
四. 系统功能模块设计.............................................................................................. 21
4.1 服务器端的设计.............................................................................................. 21
4.1.1 服务器等待连接线程设计........................................................................ 21
4.1.2 服务器处理客户端信息线程设计............................................................ 22
4.2 客户端设计...................................................................................................... 28
4.2.1 客户端登录模块设计................................................................................ 28
4.2.2 新用户注册模块设计................................................................................ 29
4.2.3 客户端主界面模块设计............................................................................ 29
4.2.4 点对点通信模块设计................................................................................ 30
4.2.5 一对多通信模块设计................................................................................ 30
4.2.6 点对点文件传输模块设计........................................................................ 31
五. 系统测试.............................................................................................................. 33
六.结束语.................................................................................................................... 33
七.参考文献................................................................................................................ 34
一.绪论
1.1 课题背景
Internet 是目前世界上最大的计算机互联网络,它遍布全球,并将世界各
地不同规模和大小的网络连接成为一个整体。目前基于 Internet 的应用已经非
常多了,例如网上收发邮件、网上购物、网上看电影等等。这些应用无不在改变
人们的生活传统生活方式。
目前人们进行信息交流的方式非常多,例如电报、电话、电子邮件等通讯手
段。但是这些都存在不便利或者费用方面的问题,例如电子邮件,虽然费用不高,
甚至可以免费使用,但是无法实现即时通讯,只能作为一种辅助交流的通讯手段。
这时开发一套网络聊天系统变得尤为重要,通过该系统不但能够实现点对点的交
流,还能够实现多人同时聊天,并且可以相互传递文件资料。最主要的是,它的
费用非常低廉,信息处理速度快,这样人们才能在这个活动的社会中加强联系,
从而创建出更多的财富和价值。
1.2 课题研究内容及意义
目前已有的一些网络聊天系统已经非常多了,例如腾讯的 QQ,网易的泡泡
等等。这些网络聊天系统已经非常成熟了,不过它们都要求用户必须连接互联网
才能够进行通信。目前有很多公司,由于保密公司并不会让员工连入互联网,所
以这些软件都将无法使用。这是就需要开发一款能够在公司局域网中使用的聊天
系统,并实现公司内部员工的通讯和交流。
该系统分为服务器端和客户端两个不同的程序,其中服务器端需要运行在公
司的服务器上,而客户端需要部署到公司员工的机器上。这样员工只需要打开客
户端并登录到服务器,就可以与局域网上的其他员工彼此之间发送信息,并传送
资料了。
本课题主要研究的是基于 Socket 的聊天软件,此聊天软件分为服务器程序
和客户端程序,本课题的目标是能实现用户在客户端与服务器端传递信息。主要
研究开发内容是:熟悉系统开发平台,探索在此开发平台下,利用 Socket 编程
技术、多线程开发技术、TCP/IP 协议等进行聊天软件的实际开发。具体要实现
的目标如下:(1) 实现用户的注册、登陆、修改信息等功能 (2) 实现点对点的
通信,即私聊(3) 实现一对多的通信,即群聊 (4) 实现点对点的文件传输 。
1.3 系统相关技术介绍
1.3.1 Java 语言概述
Java 语言是目前流行的一种网络编程语言,它的面向对象、跨平台和分布
应用等特点给编程人员带来一种崭新的计算概念,使 WWW 由最初的单纯提供静态
信息发展到现在的提供各种各样的动态服务。Java 不仅能够编写嵌入网页中具
有声音和动画功能的小应用程序,而且还能够应用于独立的大中型应用程序,其
强大的网络功能可以把整个 Internet 作为一个统一的运行平台,极大地拓展了
传统单机或 Client/Server 模式应用程序的外延和内涵。从 1995 年正式问世以
来,Java 逐步从一种单纯的高级编程语言发展为一种重要的 Internet 开发平台,
并进而引发带动了 Java 产业的发展和壮大,成为当今计算机业界不可忽视的力
量和重要的发展潮流与方向。
(1)Java 语言的起源
最早 Java 语言的出现是源于独立开发平台语言的需要,当时人们希望能编
写出嵌入到各种家用电器等设备的芯片上、且易于维护的程序。它的出现是为了
弥补当时的编程语言,例如 C、C++等只能对特定的 CPU 芯片进行编译的缺陷。
Java 的设计者们就大胆设想让更换芯片的电器还是能够正确运行,无需重新编
译芯片,因此 Sun 公司于 1990 年成立了由 James Gosling 领导的开发小组,开
始致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作
系统、各种 CPU 芯片上的代码。经过他们的精心钻研和努力,便促成了 Java 语
言的诞生。
(2)Java 语言的发展前景
在 2005 年的 Java One 开发者大会上,James Gosling 做了题为“Java 技术
下一个 10 年贡献”的演讲,James Gosling 认为,Java 技术提高了计算的“流
动性”,就如同货币的发明提高了商品的流动性一样。无所不在的网络丰富了每
个人的信息量,就如同可以兑换的货币产生了财富一样。由于从前的网络速度是
很慢的,所以计算被束缚在特定的计算机上,而这种情况将一去不复返了。
目前,全球 Java 开发人员已经超过 450 万,因此 Java 社区是一个充满活力
和创新精神的团队,这正是 Java 更加繁荣的保障。为了保持 Java 的增长和推进
Java 社区的参与,Sun 在 Java One 开发者大会上宣布开放 Java 核心源代码,以
鼓励更多的人参与到社团活动中来,这是 Sun 为推进社团发展和维护 Java 技术
兼容性而迈出的重要一步,同时也是 Java 技术在创新和社会进步上继续发挥重
要作用的标志。
随着 Java 的开源,在未来的十年里,Java 的应用范围将变得更广。数字媒
体将是 Java 的下一个目标,同时,Java 将教育和健康作为未来 Java 发展过程
中的两大重点应用领域。
(3)Java 的语法
Java 是面向对象的程序设计语言,其基本语法和 C 语言大致相同。从一定
角度上讲,C 语言加上面向对象功能就是 C++。那么 Java 与 C++有什么区别呢?
简要地说,Java 改进了 C++的一些缺点,并增加了一些新的功能,从而变得比
C++更加简单、易学,编写出来的程序也更具健壮性。下面就对它们进行一个简
单的比较。
Java 去掉了 C 语言的指针。如指针使用得当,对增强程序的功能有很大
帮助,一旦使用不当,经常会导致死机。
Java 没有了 C 语言中的预处理器。如#ifdef、#define、常量声明等都不
使用了,当然也少了#include 命令,从而也没有头文件(.h 文件)。和 C++相比,
Java 不支持多继承的概念,目的是为了避免对象和对象之间的关系复杂化。
Java 增加了垃圾回收机制、异常处理和新的限定词等功能。这些几乎全
部都是基于整个系统和程序本身安全性的考虑。
不论在何种平台上,Java 基本数据类型的大小是不变的。
1.3.2 TCP/IP 协议
TCP/IP 是 Transmission Control Protocol/Internet Protocol 的简写,
中文译名为传输控制协议/互联网络协议,该协议是 Internet 最基本的协议,简
单地说,就是由底层的 IP 协议和 TCP 协议组成的。TCP/IP 协议的开发工作始于
70 年代,是用于互联网的第一套协议。
(1)TCP/IP 参考模型
TCP/IP 协议的开发研制人员将 Internet 分为五个层次,以便于理解,它也
称为互联网分层模型或互联网分层参考模型,如下所示:
物理层:对应于网络的基本硬件,这也是 Internet 物理构成,即我们可以
看得见的硬设备,如 PC 机、互连网服务器、网络设备等,必须对这些硬设备的
电气特性作一个规范,使这些设备都能够互相连接幷兼容使用。
网络接口层:它定义了将资料组成正确帧的规程和在网络中传输帧的规程,
帧是指一串资料,它是资料在网络中传输的单位。
互联网层:本层定义了互联网中传输的“信息包”格式,以及从一个用户通
过一个或多个路由器到最终目标的"信息包"转发机制。
传输层:为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连接。
应用层:它定义了应用程序使用互联网的规程。
(2)网间协议 IP
Internet 上使用的一个关键的底层协议是网际协议,通常称 IP 协议。我们
利用一个共同遵守的通信协议,从而使 Internet 成为一个允许连接不同类型的
计算机和不同操作系统的网络。要使两台计算机彼此之间进行通信,必须使两台
计算机使用同一种"语言"。通信协议正像两台计算机交换信息所使用的共同语
言,它规定了通信双方在通信中所应共同遵守的约定。
计算机的通信协议精确地定义了计算机在彼此通信过程的所有细节。例如,
每台计算机发送的信息格式和含义,在什么情况下应发送规定的特殊信息,以及
接收方的计算机应做出哪些应答等等。
网际协议 IP 协议提供了能适应各种各样网络硬件的灵活性,对底层网络硬
件几乎没有任何要求,任何一个网络只要可以从一个地点向另一个地点传送二进
制数据,就可以使用 IP 协议加入 Internet 了。
如果希望能在 Internet 上进行交流和通信,则每台连上 Internet 的计算
机都必须遵守 IP 协议。为此使用 Internet 的每台计算机都必须运行 IP 软件,
以便时刻准备发送或接收信息。
IP 协议对于网络通信有着重要的意义:网络中的计算机通过安装 IP 软件,