第18章
网络实时聊天系统网络实时聊天系统是当前比较热门的话题之一。本章将介绍如何开发一个基于TCP/IP协议的点对点网络实时聊天系统。该系统采用客户端/服务器端模式,提供通信参数配置、即时聊天、多线程收发数据、滚动显示记录、实时存储记录、历史聊天记录查询等功能。
18.1
系统功能介绍网络实时聊天系统涉及的知识比较多,本小节主要介绍网络实时聊天系统各个组成部分的功能,包括通信参数配置、点对点实时聊天、多线程收发聊天记录、聊天记录滚动显示、聊天记录实时存储、历史聊天记录查询等。
18.1.1
通信参数配置参数配置主要用来配置通信参数,包括通信端口、IP地址的配置等信息。在参数配置完成后可以进行点对点连接,连接成功后才能进行即时聊天。本章介绍的网络实时聊天系统是一个基于客户端/服务器端模式的网络即时通讯系统,主要包括客户端和服务器端通信程序。网络实时聊天系统的客户端和服务器端功能并不独立分开,而是集成在一起。客户端和服务器端的概念在本系统中是相对的,发起聊天连接的一方称为客户端,接收连接的一方称为服务器端。
18.1.2
点对点实时聊天为了提供通信的效率,采用多线程的方式处理聊天记录。对于即时聊天数据的接收、处理和发送分别单独开辟线程来处理,其中,接收线程专门用来处理数据的接收,处理线程专门用来对接收的数据进行业务逻辑的处理,发送线程专门用来处理数据的发送。
18.1.3
聊天记录滚动显示聊天记录采用类似于QQ的滚动显示效果,即时滚动显示聊天记录,聊天记录显示遵循最近记录最近显示的原则。
18.1.4
聊天记录实时存储聊天记录实时存储,包括本地还是远程端、聊天时间、聊天内容等信息。聊天数据存储在网络实时聊天系统的当前目录下。
18.1.5
历史聊天记录查询历史聊天记录查询,查询并显示所有历史聊天记录,包括本地还是远程端、聊天时间、聊天内容等信息。查询到的所有历史记录以列表的形式显示。
18.2
系统分析与设计本小节将根据前面介绍的系统功能来对系统进行分析与设计,主要包括开发工具和数据库的选型、通信协议和通信模式的选择、网络协议的分析与设计、数据库的分析与设计、系统流程、功能模块设计与组成等信息。
18.2.1
开发工具和数据库的选型本系统选择Visual C++
6.0作为开发工具,Visual C++ 6.0对网络通信编程和数据库技术提供了很好的支持。本系统以Microsoft Office
Access 2003为后台数据库,采用ADO数据库访问技术实现聊天记录的实时存储和历史查询。18.2.2
通信协议和通信模式的选择本系统的通信协议采用比较成熟的网络通信协议TCP/IP协议,该协议的详细信息可以参见第10章网络编程。通信模式采用客户端/服务器端模式,即C/S模式,其中,发起聊天连接的一方称为客户端,接收连接的一方称为服务器端。
18.2.3
网络协议的分析与设计本系统的网络数据收发协议如下:
(1)网络数据主要是聊天记录数据,聊天记录支持文本格式,聊天数据支持1024个字节。
(2)网络数据协议格式为包头+包长+有效数据,其中,包头固定为ABYZ,包长为有效数据的长度。
(3)数据发送时,如果一条聊天数据大于1024个字节,则分包发送。
(4)数据接收时,根据包头和包长来接收有效聊天数据。