




免费预览已结束,剩余37页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 本科毕业论文本科毕业论文 (科研训练、毕业设计) 题题 目:企业实时通讯系统目:企业实时通讯系统 服务器规划与设计服务器规划与设计 姓 名: 学 院:软件学院 系:软件学院 专 业:软件工程 年 级: 学 号: 指导教师: 职称: 指导教师: 职称: 年 月 厦门大学学士学位论文 2 摘要 Instant Messaging(即时通讯,实时传讯)的缩写是 IM,这是一种可以让 使用者在网络上建立某种私人聊天室(chartroom)的实时通讯服务。大部分的 即时通讯服务提供了状态信息的特性显示联络人名单,联络人是否在线及 能否与联络人交谈。 与公众 IM 相比,公众 IM 主要是面向个人的,用于个人朋友之间的沟通, 是个人通讯手段之一;而企业 IM 是面向企业的,主要提供企业内部办公沟通、 对外商务沟通的服务。其目的是给员工提供更方便的沟通方式,增强团队的信 息共享和沟通能力,提高工作效率,减少企业内部通讯费用和出差频次等从而 为企业节省开支,同时也能创造一种新型的企业沟通文化。 企业级实时通信平台,致力于帮助企业提高运作效率、降低沟通成本、拓 展商业机会,是一种高度可管理、低成本、易部署的 IT 平台。企业级实时通信 平台集成了丰富的沟通方式,包括文本会话、语音/视频交流、手机短信、文件 传输、IP 电话、网络会议、以及应用程序共享、电子白板等远程协作方式。 提供服务器和客户端软件,企业自行进行用户管理,分配用户帐号、统一 认证、权限管理、信息存档与监控。可对部门、分组、个人进行严密的权限控 制,允许或禁止使用某项功能,保证即时通信的可管理性与服务器和网络资源 的合理分配。 关键词:即时通信 套接字 企业级 第二章 系统总体设计 3 Abstract Instant Messaging (immediate communication, real-time subpoena) the abbreviation is IM, this is one kind may let the user establish some kind of personal chartroom (chartroom) in the network the real- time communication service. The majority of immediate communication service provided the condition information characteristic to demonstrate contact person name list, contact person whether online and whether conversed with the contact person. Compares with public IM, public IM mainly is faces individual, uses in between individual friends communication, is one of individual communication methods; But enterprise IM faces the enterprise, mainly provides the enterprise the internal work communication, the foreign commercial communication service。Its goal is provides the more convenient communication way to the staff, enhancement teams information sharing and communication ability, enhances the working efficiency, thus reduces the enterprise intercom expense and the business trip frequency and so on saves the expenditure for the enterprise, simultaneously also can create one kind of new enterprise to communicate the culture. The enterprise real-time communication platform, devotes in the help enterprise enhances the operation efficiency, reduces the communication cost, the development commercial opportunity, is one kind of altitude may manage the IT platform which, the low cost, easy to deploy. The enterprise real-time communication platform integrated the rich communication way, including text conversation, pronunciation/video frequency exchange, handset short note, file transfer, IP telephone, network conference, as well as application procedure sharing, electronic tabula rasa and so on telecooperation way. Provides the server and the client side software, the enterprise carries on the user management voluntarily, the assignment user account, the unification authentication, the jurisdiction management, the information puts on file with the monitoring. May to the department, the grouping, carry on the strict jurisdiction control personally, the permission or the prohibition uses some function, the guarantee immediate correspondence manipulate and the server and the network resources rational distribution. KeyKey word:word: ImmediateImmediate correspondence;correspondence; SleeveSleeve jointjoint character;character; EnterpriseEnterprise 厦门大学学士学位论文 4 目录目录 第一章第一章绪论绪论 5 1.1 即时通讯系统的定义5 1.2 IM 的行业应用6 1.3 开发企业即时通信系统的意义7 1.4 论文的主要工作.8 第二章第二章系统总体设计系统总体设计 9 2.1 即时通信系统的设计原则.9 2.2 即时通信系统通信原理.9 2.3 即时通信系统技术原理及架构.11 2.4 即时通信方式.12 2.5 系统的功能需求.13 2.5.1 基本功能13 2.5.2 业务功能13 2.6系统开发平台13 2.7 系统的总体设计和实现.15 2.8 本章小结.16 第三章第三章服务端的设计服务端的设计 17 3.1 服务端的设计概要.17 3.2 服务器端功能需求.17 3.3 服务器端处理流程.17 3.4 服务器端信息管理.18 3.5 服务器端设计方法概要.19 3.5.2 发送信息方法19 3.5.1 接收信息方法.19 3.6 本章小结.20 第四章第四章服务端的具体实现服务端的具体实现 21 4.1 服务端重要类的介绍.21 4.1.1 Server 主类.21 4.1.4 包含信息的自定义类31 4.2.1 服务端主模块34 4.2.2 Server 控制流程.34 4.2.3 独立的通讯线程36 4.3 本章小结39 结论结论40 致谢语致谢语41 参考文献参考文献42 第二章 系统总体设计 5 第一章第一章 绪论绪论 1.1 即时通讯系统的定义 Instant Messaging(即时通讯,实时传讯)的缩写是 IM,这是一种可以让 使用者在网络上建立某种私人聊天室(chatroom)的实时通讯服务。大部分的 即时通讯服务提供了状态信息的特性显示联络人名单,联络人是否在线及 能否与联络人交谈。目前在互联网上受欢迎的即时通讯软件包括百度 Hi、QQ、MSN 、Yahoo! Messenger、NET Messenger Service、Jabber、ICQ 等。 通常 IM 服务会在使用者通话清单(类似电话簿)上的某人连上 IM 时发出 讯息通知使用者,使用者便可据此与此人透过互联网开始进行实时的通讯。除 了文字外,在频宽充足的前提下,大部分 IM 服务事实上也提供视讯通讯的能力。 实时传讯与电子邮件最大的不同在于不用等候,不需要每隔两分钟就按一次 “传送与接收” ,只要两个人都同时在线,就能像多媒体电话一样,传送文字、 档案、声音、影像给对方,只要有网络,无论对方在天涯海角,或是双方隔得 多远都没有距离。 随着现代企业的高速发展,沟通在企业管理中发挥着越来越重要的作用。 在企业管理过程中,我们每时每刻都要面对各种各样的问题,而解决这些问题的 关键手段之一便是有效的沟通。缺乏沟通,许多事情往往会事倍功半,甚至半途 而废,一无所获。即时通讯(Instant Messaging)的研究目前是互联网应用中一 个热门方向,尤其是企业级即时通讯更为国内外应用的热点。企业版的即时通讯 软件的诞生,给企业的管理特别是在企业内部沟通方面带来了新的思路和手段。 这也使即使即时通讯系统成为了企业内部沟通的一个电子解决方案。 通过对即 时通讯手段的研究,设计并制作了基于 Intranet 的即时通讯系统 厦门大学学士学位论文 6 C信息存储方便管理对外通信等各项权限、文件传输等,有效保证了企 业的商业信息安全。采用数据库方式,保证个人信息的安全与个人隐私。 超强的可管理性。 1.4 论文的主要工作 本文分析了即时通信系统的一些关键技术,在此基础上研究和实现即时通 信系统,并根据 C/S 结构程序的特点,进行测试和分析 本文根据软件工程的原理,描述了即时通信软件系统的开发过程,包括需 求分析、总体设计、详细设计以及实现过程。 第一章介绍相关背景。 第二章介绍系统的总体设计和相关技术。 第三章介绍系统的详细设计和实现。 第四章总结全文。 由于本人主要负责设计的是 Server 端的程序,所以 Client 端以及数据库 方面会简要提及,主要介绍服务端的详细设计。 第二章 系统总体设计 9 第二章 系统总体设计 2.1 即时通信系统的设计原则 该系统的目的是实现一个企业级的实时通讯平台,致力于帮助政府机关或 者企事业单位提高运作效率,降低沟通成本。该系统与个人即时通讯系统不同, 其主要为企事业单位服务,用于企事业单位内部的沟通和运作,方便员工交流, 便于信息共享和沟通,提高工作效率,减少出差次数,降低工作成本等。 设计遵循基本原则 符合标准化、规范化、模块化的设计思想 具有分布式处理能力 较高的安全性、稳定性、高效性 良好的开放性和较好的用户接口 简单易用的系统操作 2.2 即时通信系统通信原理 即时通信的核心在于网络通信。计算机网络中使用最为广泛的协议是 TCP/IP 协议。 TCP/IP 协议是一套完整的忘记通信协议族,TCP/IP 协议是两个网络基础协 议:IP 协议、TCP 协议名称的组合。是一组包括 TCP 协议和 IP 协议, UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。TCP 协议根据可靠的面向连结的全 双工数据流,IP 协议提供无连接的报文分组服务。许多应用协议都以这两种协 厦门大学学士学位论文 10 议为基础,它为在计算机互联网络中进行可靠的数据交换提供了有力的手段。 Socket 的核心结构包括套接字层、协议层和物理层。套接字层提供系统调 用以及协议层的借口;协议层规定通信时所使用的协议模块;物理层提供控制 网络设备的驱动程序。 Socket 有三种类型:SOCK_STREAM(流式套接字),SOCK_DGRAM(数据包套接字), SOCK_RAM(原始套接字)。 即时通信系统采用 C/S 体系结构,即客户机服务器客户端体系结构。其特 点是客户端只装载应用软件,而把数据库放在服务器上,这样就可以使客户端 不需要存储数据,从而简化客户端软件。即时通信系统的服务器端与客户端通 过 SOCKET 进行通讯。服务器端进行监听,当有通讯行为时,由客户端发起连接, 服务器端响应。 使用 TCP 协议的 Socket 工作流程如图 21: 图 21 工作流程图 由上图看出,客户机和服务器双方的系统调用在各自进程中相应地成对使 用。 端口(port)是网络协议软件和应用程序的结合点,是协议软件的一部分, 一个主机的每个网络进程都使用协议端口号进行标识。网络环境下,进程间的 通信,必须指明协议种类、主机地址和端口号,他们构成了进程间通信的一端, 讲他们称为套接字(socket) ,它是网络编程的一个接口。套接字就是进程间点 第二章 系统总体设计 11 到点的通信,它提供了进程间通信的一般方法,并允许使用复杂的通信协议 在 Internet 上,各主机间通过 TCP/IP 协议发送和接收数据包,各个数据 包根据其目的主机的 ip 地址来进行互联网络中的路由选择。可见,把数据包顺 利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统 都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给 众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此 被引入进来。 2.3 即时通信系统技术原理及架构 即时通信的基本技术原理如下: 第一步,用户 A 输入自己的用户名和密码登录服务器,服务器通过读取用 户数据库来验证用户身份,如果验证通过,登记用户 A 的 IP 地址、客户端软件 的版本号及使用的 TCP/UDP 端口号,然后返回用户 A 登录成功的标志,此时用 户 A 在系统中的状态为在线 (OnlinePresenee)。 第二步,根据用户 A 存储在服务器上的好友列表 (BuddyList),服务器将 用户 A 在线的相关信息、发送给也同时在线的好友的 PC 机,这些信息包括在线 状态、IP 地址、客户端使用的 TCP 端口(Port)号等,好友的客户端收到此信息 后将在予以提示。 第三步是服务器把用户 A 存储在服务器上的好友列表及相关信息回送到他 的客户端机,这些信息包括有在线状态、IP 地址、客户端使用的 TCP 端口 (Port)号等信息,用户 A 的客户端收到后将显示这些好友列表及其在线状态。 接下来,如果用户 A 想与他的在线好友用户 B 聊天,他将直接通过服务器 发送过来的用户 B 的 IP 地址、TCP 端口号等信息,直接向用户 B 的 PC 机发出 聊天信息,用户 B 的客户端软件收到后显示在屏幕上,然后用户 B 再直接回复 到用户 A 的 PC 机,这样双方的即时文字消息就不通过服务器中转,而是通过网 络进行点对点的直接通讯,这称为对等通讯方式(Peer To Peer)。 在系统中,如果用户 A 与用户 B 的点对点通讯由于防火墙、网络速度等原 因难以建立或者速度很慢,服务器还提供消息中转服务,即用户 A 和用户 B 的 即时消息全部先发送到服务器,再由服务器转发。 厦门大学学士学位论文 12 基本逻辑如下图 22 所示 图 22 基本逻辑图 2.4 即时通信方式 即时通信方式如下: 在线直接通讯 如果果用户 A 想与他的在线好友用户 B 聊天,他将直接通过服务器发送过 来的用户 B 的 IP 地址、TCP 端口号等信息,直接向用户 B 的 PC 机发出聊天信 息,用户 B 的客户端软件收到后显示在屏幕上,然后用户 B 再直接回复到用户 A 的 PC 机,这样双方的即时文字消息就不在服务器中转,而是直接通过网络进 行点对点的通讯。 在线代理通讯 用户 A 与用户 B 的点对点通讯由于防火墙、网络度很慢,服务器将会主动 提供消息中转服务,即用户 A 和用户 B 的即时消息全部先发送到服务器,再由 第二章 系统总体设计 13 服务器转发给对方。 离线代理通讯 用户 A 与用户 B 由于各种原因不能同时在线时,如此时 A 向 B 发送消息, 服务器可以主动寄存 A 用户的消息,到 B 用户下次登陆时自动将消息转发给 B。 扩展方式通讯 用户 A 可以通过服务器将信息以扩展的方式传递给 B,例如短信发送到 B 的手机,传真发送方式传递给 B 的电话机,以 E-Mail 的方式传递给 B 的电子邮 箱等。 2.5 系统的功能需求 2.5.1 基本功能 1)用户注册:通过客户端软件进行新用户注册。 2)系统登陆:通过号码密码登陆。 3)好友管理:方便管理自己的好友。 4)用户查找:通过用户信息进行用户查找。 2.5.2 业务功能 1)收发即时、离线消息,与其他联系人实时交流。 2)收发文件资料,与状态为在线的联系人进行文件资料收发。 3)添加删除联系人。 4)查看联系人资料,查看指定联系人的详细资料(基本信息,联系方式等) 。 5)收发系统广播,具有域管理员身份的帐号可以发送广播消息给全部用户。所 有用户都可以接受来自于系统的广播消息。 6)管理个人资料 厦门大学学士学位论文 14 2.6 系统开发平台 软件平台 1. 操作系统 操作系统是构建整个系统的基础,是整个系统安全可靠的保证,我们选择 Windows 操作系统作为本系统项目的操作系统。 2. 数据库平台 采用 SQL Server 2000 作为本系统数据库的管理系统。选择 Mictosoft SQL Server 的主要原因在于它的可扩展性,因为 Mictosoft SQL Server 是基 于多线程并行数据库内核,他能够发挥附加处理器的优势。SQL Server 2000 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数 据管理。SQL Server 2000 数据库引擎为关系型数据和结构化数据提供了更安 全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应 用程序。 3.开发语言和开发工具 本系统采用 JAVA 语言。 Java 是 Sun Microsystem 公司的 James Gosling 开发的编程语言。它以 C+为基础,但是却是一个全新的软件开发语言。Java 是一个简单,面象对象, 分布式,解释性,强壮,安全,与系统无关,可移植,高性能,多线程和动态 的语言-这是 Sun 给 Java 的定义。 Sun 公司的口号就是“网络就是计算机“,Java 能使所有东西从桌面计算平稳 的转变为基于网络的计算,它是专门为此而建立的,并显然是为了完成这个任 务而来的。使用 Java,我们可以相对轻松的一天编写一个有条理的网络程序。 今天,Java 的网络功能正在飞跃发展,不断有新的特性增加到这个有价值的基 础上,JavaSoft 实验室正在不断努力使 Java 更加完善。 开发工具为 MyEclipse。 MyEclipse 企业级工作平台(MyEclipse Enterprise Workbench ,简称 第二章 系统总体设计 15 MyEclipse)是对 Eclipse IDE 的扩展,利用它我们可以在数据库和 J2EE 的开 发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰 富的 J2EE 集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支 持 HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。 2.7 系统的总体设计和实现 系统采用客户端、服务器开发与管理模式。服务器负责系统中大部分信息 的接受和转发工作。服务端负责数据库的建设与维护;客户端可以访问和修改 数据库。无论服务端还是客户端,在接受信息时执行 Server 功能,在发送信息 时执行 Client 功能。数据库和数据库的设置在服务器端,系统中大部分的信息 交流均通过服务端。用户使用客户端访问并操作数据库。服务器端有系统管理 员进行系统业务维护,客户端完成各单位用户的大部分信息传递工作。如下图 23 所示: 图 23 信息传递工作图 系统采用 Client/Server 方式设计,服务器端数据库使用 SQLserver 做数据 库管理系统。 考虑到企业即时通信的特点,平等对待系统中每台计算机,即可以充当服务 器又可以充当客户端。在接收过程中充当 server 角色,在发送过程中充当 client 角色。 系统模块的定义 厦门大学学士学位论文 16 模块 名称 标示符子模块名称功能程序 标示 符 服务端主模 块 服务端应用程序入口SA 服务端信息 接收 监听客户端发来的信息,并接收 存入缓存 SB 用户部门信 息类型模块 创建删除用户、部门、信息类型, 修改用户信息。 SC 服务 器端 SERVER 管理员登陆管理员登陆界面SD 客户端主模 块 客户端应用程序入口CA 收发信息模 块 发送、接收消息CB 收发文件模 块 发送、接收文件CC 客 户 端 CLIENT 用户系统操 作模块 资料修改等CD 图 24 系统模块定义图 2.8 本章小结 本章介绍了系统的设计原则、通信原理方式、功能的需求以及系统总体上的 设计,确定了我们的开发环境和工具。 第二章 系统总体设计 17 第三章 服务端的设计 3.1 服务端的设计概要 服务器端功能需求的设计 服务器端处理流程的设计 服务器端信息管理的设计 3.2 服务器端功能需求 服务器端是即时通信系统信息交换的平台。 主要功能有:监听、接受客户端发过来的信息;转发客户间的信息、文件; 监听系统运行状态,监测客户端、用户状况;想客户端发送系统信息,如提示 框、出错信息或系统退出信息;增删用户、部门;新建信息类型;数据库的日 常维护。 3.3 服务器端处理流程 系统管理员登陆后,服务端启动,服务端可以直接向客户端发送信息,也可 以启动信息监听线程接受信息。系统管理员可以进行用户、部门、信息类型的 添加和删除,也可以进行代码维护,数据库的日常维护等工作。当服务端退出 系统是,服务端向所有客户端发送退出信息,然后终止系统运行。服务端处理 流程如下图 31: 厦门大学学士学位论文 18 收到信息 系统管理员登 陆 退出 向客户 端发送 退出信 息 服务器启动 服务端信息监 听 接受数据向客户端发送信 息 数据备份 数据库管理 代码维护 增加删除用户、部门设置增加删除信息类 型 图 31 服务器端处理流程图 3.4 服务器端信息管理 系统的大部分信息都要经过服务端,其中包括客户端发来的各种信息,如 文本图像信息、文件,以及数据库的信息。 服务端信息管理主要包括: 1)用户和部门的增加和删除; 2)信息类型的新建; 3)接受和转发客户端之间的信息、文件。 4)向客户端发送系统信息。 5)用户收发信息的统计。 6)数据库的日常维护。 服务端信息的数据结构如下图 32 所示: 第三章 服务端的设计 19 服务端信息管理 用户、 部门 的增 加删 除 新 建 信 息 类 型 接收、 转发客 户端之 间的信 息 向客 户端 发送 系统 信息 统计 用户 收发 信息 数据 库日 常维 护 图 32 服务器端信息数据结构图 3.5 服务器端设计方法概要 3.5.2 发送信息方法 服务端发送信息类中,应设有如下方法: 1)发送文件、信息等的消息处理方法。 2)发送服务器退出及出错信息的方法 3.5.1 接收信息方法 服务端接受信息类中,应设有如下方法: 1)监听信息的进程:当一个客户端向服务端发送信息时,服务端将启动一个监 听线程,该线程将持续到接受信息工作的结束才终止。 2)接受信息的方法:负责将信息接收并存入缓存,并按其所属类别做统计。 厦门大学学士学位论文 20 3.6 本章小结 本章主要是服务器端的设计方法和分析,分析了服务器端的功能需求,处理 流程和信息管理流程。 第四章 服务端的具体实现 21 第四章 服务端的具体实现 4.1 服务端重要类的介绍 4.1.1 Server 主类 Server 完成的任务(后台运行): 1. 与数据库通信:连接数据库,读插改数据库表 2. 创建 ServerSocket 对象,监听客户端的连接 3. 创建到客户端的初始化信息列表-与客户端有 IO 操作 Server()所做的工作: 1. 连接数据库,读取表 UserInfo,PublicMessage,Message 分别填充 UserInfo,PublicMessage,Message 对象并保存。 2. 监听 3000 号端口,在 run()循环等待连接 3. 创建服务器端主界面不显示 4. 创建服务器登陆界面并显示,成功登陆后显示主界面 服务器登陆界面如下图 41 厦门大学学士学位论文 22 图 41 服务器登陆界面图 服务端主要界面如下图 42: 图 42 服务端主界面图 Server 类重要方法完成的任务: run()方法完成的任务(实现了线程接口 Runnable,run()方法实际就是线程 第四章 服务端的具体实现 23 体) 创建定时更新数据库的定时器,接受客户端的连接请求: CSocket=welcome.accept();-首次与客户端的传输层通信 进行用户验证,将 CSocket 作为参数传给 Certifing(Socket Csocket) 准备接收客户端的认证信息 Certifing(Socket Csocket)方法: 由 Socket Csocket 创建到客户端的流准备读写 等待客户端的输入 先接收客户端的控制字符(单个字符)(L 或者 R),分别表示用户登陆或者注 册 接着接收客户信息 UserInfo 对象-客户端将个人信息(主要用到的是用 户名和密码)封装成的对象。 如果 L 则进行用户登陆验证 如果 R 则先检验用户名是否已经存在,若不存在,创建对应的 UserInfo 对象,写入数据库和 AllUsers 具体实现: 对于,若发来的 UserInfo 对象与数据库即 AllUsers(将数据库用户信息 读入保存于此,是个 Hashtable,便于快速索引特定用户)数据符合则通过验证 则将该 UserInfo 对象传入 Initing(UserInfo tempUserInfo) 对于,先检验接收的 UserInfo 对象,若用户名不在则使用,并写入数据 库,将该 UserInfo 对象传入 Initing(UserInfo tempUserInfo),否则,即没通 过验证,则发送 N 到客户端,告知注册失败关闭刚创建的流和 Socket 对象。 登陆/注册成功后,创建 ServerThread 对象,并添加到哈希表 CSThreads 中,用哈希表也是为了方便快速索引,并将登陆/注册用户 UserInfo 对象对应 的 User 对象交给 SwitchThread 对象,将登陆/注册用户信息转发给其他在线用 户,通知有用户注册/登陆。 厦门大学学士学位论文 24 Initing(UserInfo tempUserInfo)方法: tempUserInfo 是从客户端接受的用户信息,在这里进一步填充完整 即将 tempUserInfo 对象的在线状态域设置为 true,时间域设置成当前时 间(服务器端时间),并将该用户刷新到服务器端维护的所有用户的哈希表 AllUsers 中 接着,以字符Y回复客户端,通知登陆成功,准备接收更多信息, 最后,将服务器端维护的,所有用户、公告、和与发送给登陆用户的留言。 具体发送规则如下: C表示公告 发送规则:发送一个 C 发送一个 PublicMessage 对象 服务器端维护的 PublicMessaglist 列表长度不缩短。 M表示留言 发送规则:发送一个 M 发送一个 Message 对象, 服务器维护的 Messaglist 列表长度随之减小,留言发送给指定用户后就没必要 再保留在服务器端了。 F表示所有用户 UserInfo 对象,包括登陆用户自己,客户端会把接收到的 服务器返回的自己 UserInfo 对象更新到原先为了登陆/注册创建的 UserInfo 对 象,因为服务器端更新了他的信息,对于其他用户,客户端则按照在线状态分 别显示在两个列表中 发送规则:发送一个 F 发送一个 UserInfo 对象。 E表示服务器端初始化信息发送完毕 这之后客户端先初始化客户端主界面再启动线程等待服务器写到客户端。 第四章 服务端的具体实现 25 Initing(UserInfo tempUserInfo)方法返回后,返回到 Certifing(Socket Csocket)方法 由 Certifing(Socket Csocket)方法创建 ServerThread 对象,详见之前叙述 的 Certifing(Socket Csocket)方法后面的登陆/注册成功部分。 数据库访问,对数据库的真正操作全部在该对象完成,并向外提供接口供 其它对象使用,这样使数据库的操作集中控制,不易出错; 与数据库相关的方法: public void deleteUser(UserInfo user)/删除用户 public void DBUpdate()/定时调用约 10 秒钟调用一次,将用户最近登陆时间 及地址信息和留言更新到库 public void DBUpdate(User NewUserInfo)/修改用户信息时用 public void DBInsert(UserInfo userinfo)/用户注册时候用 public void DBInsert(PublicMessage pubmsg)/给离线用户发送留言时候用 public String getSerAdminName()/返回从数据库里读入的服务器管理员用户 名 public String getSerAdminPassWord()/返回从数据库里读入的服务器管理员 密码 public Hashtable getAllUsers()/返回 Server 维护的所有用户 UserInfo 对 象,供其它对象使用,因为只有 Server 对象才能通过读取数据库获得这些信息, 故向外提供接口 public void MsgReceiver(Message msg)/将给离线用户的留言保存到 Messagelist 中 public void OffUserReceiver(User offuser)/对离线用户的处理 public void UserInfoModifyReceiver(User NewUserInfo)/对用户修改信息 的处理 public void PubMsgdispatch(PublicMessage pubmsg)/服务器向各个用户发 送公告的处理 厦门大学学士学位论文 26 4.1.24.1.2 SwitchThreadSwitchThread 类和类和 ServerThreadServerThread 类类 SwitchThread 负责转发,没有 IO 操作。ServerThread 保持与 Server 和 SwitchThread,协调没有 IO 操作。 SwitchThread 类 SwitchThread 完成的任务(后台运行): 实际上是个转发器,保存了所有的 ServerThread 对象(见下面详细解释) 转发即时通讯信息实际是转发给 ServerThread 对象 向各客户端发布公告实际是转发给 ServerThread 对象 通知各客户端有新用户上下线,使各客户端与服务器端同步 维护四个队列,一个哈希表 private LinkedList ONingQueue; 保存在线用户 private LinkedList OFFingQueue; 保存离线用户 private LinkedList RealTimeMsgQueue; 保存即时信息 private LinkedList NewPubMsgQueue; 保存新发送的公告,服务器若不是第一次启动,则数据库里可能有上次发送的 公告,新公告是指服务器启动后发送的公告 Private Hashtable CSThreads; 所有在线用户的服务对象 SwitchThread 主要方法 1.用户相关的方法: public void OffUserReceiver(User offuser) public void OnUserReceiver(User onuser) public void UserInfoModifyReceiver(User NewUserInfo) 第四章 服务端的具体实现 27 下线,上线分别更新到用户队列: private LinkedList ONingQueue; private LinkedList OFFingQueue;中 用户信息修改也更新到 ONingQueue,因为只有在线用户才能更新资料 2.公告和即时消息的方法 public void PubMsgReceiver(PublicMessage PubMsg) public void RealTimeMsgReceiver(Message msg) 分别更新到新公告和即时消息队列: private LinkedList NewPubMsgQueue; private LinkedList RealTimeMsgQueue; 3.public void run() 该类实现了线程接口 Runnable,run()方法就是线程体,负责每 500 毫秒 将 OningQueue,OFFingQueue,RealTimeMsgQueue,NewPubMsgQueue 中的信息 转发给 Hashtable CSThreads 中所有的 ServerThread 对象。 ServerThread 类 ServerThread 完成的任务(后台运行): 每一个客户端连接(登陆/注册成功)进来,服务器端就会生成一个 ServerThread 对象 Server 对象就会把与客户端对应的 Socket 传递进来,并由 该对象的内部类 InputThread、OutputThread 负责具体的与客户端的通信。 接收 Server 创建的 Socket 和与之对应的流。 为 InputThread、OutputThread 与 Server、SwitchThread 维护通信信息队 列。 仅负责这四个对象的协调没有 IO 操作。 创建到客户端的真正的服务线程: InputThread 和 OutputThread是 ServerThread 的内部类 ServerThread 也维护了四个队列 private LinkedList ONingQueue; 厦门大学学士学位论文 28 保存在线用户 private LinkedList OFFingQueue; 保存离线用户 private LinkedList NewPubMsgQueue; 保存新公告 private LinkedList RealTimeMsgQueue; 保存即时消息 其中前面 2 个含义跟 SwitchThread 类似,分别表示在线用户、离线用户。 新公告是指用户登陆后服务器才发送的公告。因为在用户上次登陆到这次登陆 之间可能有公告,登陆时候会一起初始化,这里新公告是指这之后服务器又发 送的公告。 即时消息,仅仅是跟 ServerThread 对象通信的对方相关的即时消息,其他 用户的不必要也不能在这里出现。 4.1.3 其他重要类 介绍 InputThread ,OutputThread,ServerFrame,ServerLoginDiag InputThread 和 OutputThread 作为控制数据流,均有 IO 操作。 InputThread 接收客户端 Client 的 send()方法发送来的即时信息(控制标志 F) 接收客户端 Client 的 send()方法发送来的留言(控制标志 M) 接收客户端 Client 的 logoff()方法发送来的下线提示(控制标志 D) OutputThread 向 Client 的 run()方法-线程体发送: 服务器端新增公告(控制标志 C) 通知有刚上线用户-即在该线程服务对方的用户之后上线(控制标志 U) 通知有刚下线用户-即在该线程服务对方的用户上线后下线(控制标志 D) 第四章 服务端的具体实现 29 到该线程服务对方的即时信息(控制标志 F) InputThread 接收到当前服务用户下线提示(控制标志 D) 后,回复(控制标志 G) ServerFrame 和 ServerLoginDiag 为界面相关,前者为主界面,后者为服务器用户登陆界面,没有 IO 操作。 ServerFrame 相关介绍 显示的内容: 1) 当前在线和离线用户 2) 客户端到服务器的连接总数(就是在线用户数) 3) 服务器 IP 地址和开放的端口号 完成的功能: 将服务器端新增公告交给 Server 处理 界面如下图 43: 43 功能界面图 厦门大学学士学位论文 30 界面介绍: 左边两个文本框,上面显示已经发布的公告,显示出来便于查看,不可编 辑,下面文本框编辑准备发送的公告。点击右下角”Dispatch”按钮发布公告。 右边两个用户列表,上面显示当前在线用户,下面显示离线用户。 界面底部显示当前连接到服务器的用户数(就是上线用户数)和服务器 IP 地址 和为实现 C/S 通信开放的端口(3000) 。 服务器管理员可以对用户进行删除(只能对离线用户,若对在线用户删除,可 能会造成通信混乱) 。双击用户,弹出询问对话框“是否删除用户:*” ,如下 图 44: 图 44 删除用户演示图 public ServerFrame(Server server) 构造器主界面各个元素的布局和显示,以及命令按钮,列表框的事件注册, 侦听,布局代码片断如下: LayoutUtil.add(contentPane,SendedPubMsgScroll,GridBagConstraints. BOTH,GridBagConstraints.CENTER,1,1,0,0,4,4);后面会有详细解释其含义 第四章 服务端的具体实现 31 public void CurConNum(int num) 向外提供的接口,因为该对象没有访问网络和数据库的能力,为了实时显 示当前系统状态,需要其他有访问网络和数据库的能力的对象把相关信息传递 给他使用。其功能是显示当前连接数和在线离线用户。 public void RfreshList() 该方法供 public void CurConNum(int num)调用,完成在线离线用户的 更新 ServerLoginDiag 相关介绍 该类对象生成时,Server 已经在后台启动了,并完成了所有的初始化工 作,只要登陆成功就可以看到主界面,否则虽然服务器在后台启动了,不能进 行管理(删除用户,发送公告),点击“取消”关闭服务器,退出系统。 该对象生成后显示登陆界面,在用户输入用户名和密码后通过调用 Server 对象 的 getSerAdminPassWord()和 getSerAdminName()方法来验证登陆用户的合法性。 4.1.4 包含信息的自定义类 User,封装了用户基本信息。 字段解释: String RegName=null; /注册时的用户名 String UserName=null; /真实姓名 String Job=null; /职位 String Password; /密码 String IpAddr; /登陆时候的 IP 地址 String EMail; /邮箱,保留未用 String Tel; /电话,保留未用 厦门大学学士学位论文 32 boolean on=false; /在线状态,false=离线 boolean Sex=true; /性别,false=女 Icon Image=null; /用户头像,保留未用 Date date=null; /date 是上次上线时间 String strdate; /date 的字符串表示 long longdate; /date 的整数表示 UserInfo 是 Uset 子类,封装了更多用户信息,为安全将新增信息封装在此, 用户资料是要传到客户端的,防止信息泄漏。由于后续的改动 UserInfo 类存在 的意义已经不大,多处使用,为了程序的稳定性暂时保留,该类的 public User getUser()返回一个 User 对象。 Message,留言类 有两个类似的构造器: public Message(String fromName,String toName,String msg,long date) this(fromName,toName); this.msg=msg; this.date=new Date(date); this.strLocaledate=this.date.toLocaleString(); this.strdate=this.date.toGMTString(); /public Message(String fromName,String toName,String msg,long date) public Message(Strin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商品跨境买卖合同
- 房屋租赁补充协议年
- 医疗健康服务采购协议
- 2025年海南省农林科技学校招聘11人考试模拟试题及答案解析
- 2025年广西来宾市武宣县人民医院公开招聘6人(第三期)考试模拟试题及答案解析
- 2025年商丘永城市特岗教师招聘递补考试模拟试题及答案解析
- 2025内蒙古第一地质矿产勘查开发有限责任公司招聘3人考试参考题库及答案解析
- 果树虫害综合防治技术协作协议
- 2025河北唐山曹妃甸发展投资集团有限公司招聘39人考试参考题库及答案解析
- 2025浙江宁波市象山县市场开发经营有限公司招聘编制外人员3人考试参考题库及答案解析
- 80年血火淬炼此刻亮剑正当时:纪念中国人民抗日战争暨世界反法西斯战争胜利80周年阅兵仪式对初中生的启示-2025-2026学年初中主题班会
- 2025-2026学年西师大版(2024)小学数学一年级上册(全册)教学设计(附目录P227)
- 全球热泵产业发展报告2025
- 辅警考试真题(含答案)
- 商业地产项目数字化运营与客户体验提升策略研究报告
- 2025新疆天泽和达水务科技有限公司部分岗位社会招聘28人笔试模拟试题及答案解析
- 基于多元线性回归的国内旅游收入影响分析-以江西省为例
- 巧堆肥劳动课件
- 技术方案评审表-技术选型决策
- 水厂化验室知识培训课件
- 启闭机设备安装与调试施工方案
评论
0/150
提交评论