摘 要
本论文是关于一个通信软件的设计与实现. 首先介绍了该课题的来源和意义, 以及课题中作者使用的原理技术, 包括客户/服务器模式(C/S)结构原理, TCP/IP协议的体系结构等。然后详细分析了系统的整体设计,包括系统的功能介绍、实现思想, 系统的需求分析, 系统通信协议的设计,各个模块的体系结构,并采用UML技术,绘制整体程序结构图、流程图、类图、用例图等。 接下来是介绍了各个子模块的功能、实现思想及它们的流程图、类图、消息流框图等。最后是系统的分析及优缺点及系统的总结和展望。 终端通过实际的通信链路和服务器建立TCP连接。而服务器端是接受并验证客户端连接,动态管理在线用户名单。
关键字: C/S结构;TCP/IP协议;UML技术;网络编程
ABSTRACT
The paper is about the design and realization of correspondence software. In the First this paper introduced topic origin and the topic significance, As well as the principle and the technology that the author adopts in the paper , Including customer/Server (C/S) structure principle, TCP/IP protocol system structure and so on. Then author analyzes that the overall design, Including system function introduction, realization way, demand analysis, communication agreement design, system structure of each module. And adopting the UML technology, the author draws the overall procedure structure drawing, the flow chart, class drawing, and message flow chart and so on. Finally the paper introduced that the systematic analysis 、 the excellence and the disadvantage of the system ,the summary and the forecast of the system. The terminal establishes the TCP communications through the actual correspondence link with the server. At the same time the server accepts and validates the connection of the client, dynamically manages the name list of the on-line users.
Key words: the C/S Structure; the TCP/IP Protocol; the UML Technology; Network Programming 目前,网上聊天的主要工具已经从初期的聊天室、论坛变为以MSN、QQ为代表的即时通信软件。据统计,迄今为止,全球约有一亿多人使用IM(即时通信)软件在网上交流。中国网民惯用的即时聊天工具——腾讯QQ从诞生到现在,注册用户已超过1.6亿,在线用户最高时超过200万人,而每天独立上线人数更是达到1200多万,拥有活跃用户5500万,几乎覆盖所有中国网民。 腾讯公司的QQ是一个相当流行的即时通信(IM)软件。QQ的基本功能就是QQ用户间的即时信息传输,因此,QQ以及一些类似的软件又称为“聊天软件”。经过不断的发展,QQ的功能已经相当丰富,但QQ最基本和应用最多的功能仍是即时文本传输。 本课题来源与对现代社会高速发达的通讯技术的需求。本课题软件采用客户机/服务器的网络通信的经典模型,整个课题分两大方面加以实现:一方面是服务端软件设计;另一方面是用户端软件设计。完成整个课题分三个阶段完成: 第一阶段:完成整体系统的分析以及通信协议的设计,初步确定整个软件的结构。 第二阶段:实现代码、调试,类结构设计,类图的构建完成客户端和服务器端软件开发工作。 第三阶段:完成对系统的测试分析,组装成品。 当今,全球通信产业的两个突出特点体现在:一是公众通信保持增长态势,一些国家和地区增势强劲,但存在发展不均衡的现象;二是宽带通信技术热点不断,研究和应用十分活跃。 本课题所设计的软件以简单的c/s经典网络通信结构为基础有较强的通信能力,特别是文本通信,以信息框的形式显示传输信息,易于用户读取与接收信息。这里需要说明的是,服务器必须有管理用户信息(登陆用户名、密码等)的永久存储介质,例如磁盘文件或数据库,但本课题为简化设计,把这部分省去。但课题所涉及的通信原理并没有省略,利用最基本的TCP通信协议实现客户端和服务器端的文本传输。
本项目研发主要是两大部分[1],客户端软件设计部分和服务器端软件设计部分。以下分别简单讲述两个部分的关键技术环节。 ●服务器部分 服务器端主要完成通信线路的建立接收用户端传来的信息,服务器程序通常都与数据库相结合,用户端只有向服务器发送连接请求,得到服务器段允许才可以建立连接,从而实现数据传输,关键问题主要集中在以下几个方面:编码压缩及传输技术、存储和I/O调度策略、流量控制与差错控制、接入控制、IP网的实现。 ●客户端部分 客户端主要工作是向服务器提交信息,它的核心部分主要有:应答区、对话区等。不同协作类型的系统对这2个部分的侧重点可能不同,开发过程中涉及TCP/IP协议技术,MFC网络编程技术等。系统采用客户端/服务器方式,管理和维护十分简单。
软件开发方案 在开发本软件之前,先确定整个软件系统的综合要求以及系统的数据要求,对于本软件希望能做到的要求和软件特征如下: 1. 本软件是一个简单的即时通信软件,完成后能进行简单的文本传输。 软件分为两部分,server和client,即服务器端和客户端。客户端能相互进行文本传输。 2. 服务器端能实现启动和终止服务,具有主动权。 3. 服务器端能接受并验证客户端连接。 4. 服务器端能动态管理在线用户名单,为新登录用户提供本服务器在线人员名单,将在线人员变动信息(用户上线、下线)及时传给当前再线用户。 ● 用户上线 用户上线功能分为两部分: 第一: 开启系统的时候,使用系统的用户就要收到这个人的信息,知道他已经上线。 第二: 系统在运行之中,它会不断地进行心跳告诉其他人。这个功能是为了防止在系统启动的时候发出的用户信息没有被其他的使用本地系统的人收到。使用心跳功能后,用户的信息会不断地通知在线的人,这样有利于系统的稳定。这个功能要采用网络广播来实现。 ● 用户下线 当用户退出本系统时,系统会自动发出下线的信息。凡是正在使用本系统的人都会得到通知,得到这个通知后,每个在线的人都会看到这个用户的信息从自己的列表中删除。 1. 客户端可以自由登录(login)、登出(logout)指定的Chat服务器。 2. 客户端可以根据服务器上的在线人员变动信息(用户上线、下线)修改本机保存的在线人员名单。 3. 客户端可以和其他用户的即时通信(发送和接受文本信息)。
目 录
第一章 绪 论 - 1 - 1.1 课题的来源及意义 - 1 - 1.2 项目开发的几个重要环节 - 1 - 1.3 作者的主要工作 - 2 - 第二章 Socket编程基础 - 3 - 2.1 TCP/IP协议 - 3 - 2.1.1 TCP/IP参考模型的层次结构 - 3 - 2.1.2 TCP/IP协议的通信方式 - 4 - 2.2 Socket简介 - 5 - 2.2.1 Socket历史 - 5 - 2.2.2 Socket的类型 - 6 - 2.2.3 客户机/服务器模式 - 7 - 2.2.4 阻塞和非阻塞 - 7 - 第三章 需求分析 - 9 - 3.1 软件开发方案 - 9 - 3.2 软件的信息传递过程 - 9 - 3.3 系统初始化(活动图表示) - 11 - 3.4 用户上下线动态管理 - 11 - 第四章 系统的概要设计 - 13 - 4.1 系统的实现思想 - 13 - 4.1.1 系统整体结构 - 13 - 4.2 通信协议和报文格式 - 13 - 4.3 结构、类型和宏 - 16 - 4.4 Chat的UI设计 - 17 - 第五章 系统的详细设计 - 18 - 5.1交互分析 - 18 - 5.2 Chat主要的类及其关系 - 18 - 5.2.1 CClientDlg 类 - 18 - 5.2.2 CClientSocket 类 - 19 - 5.2.3 CChatSocket 类 - 20 - 5.2.4 CClientApp类和CLoginDlg类 - 21 - 5.3 客户端上线(顺序图) - 22 - 5.4 Server的类 - 22 - 5.4.1 CServerApp类和CMainFrame类 - 22 - 5.4.2 CserverDoc类 - 22 - 5.4.3 CServerView类 - 23 - 5.4.4 CListenSocket类 - 24 - 5.4.5 CDataSocket类 - 24 - 5.4.6 CSeverlnfoDig类和CAboutDlg类 - 24 - 5.5 Chat的实现 - 25 - 5.5.1 Server - 25 - 第六章 小结 - 38 - 参考文献 - 39 - 致 谢 - 40 - |