毕业设计论文-tcp协议下的即时通讯软件的实现内容摘要:
经存在很长时间了。 流是一个用于传输数据的对象。 数据的传输有两个方向 : 1) 如果数据从外部源传输到程序中,这就是读取流。 2) 如果数据从程序传输到外部源,这就是写入流。 外部源常常是一个文件,但也不完全都是文件,它还可以是: 1) 网络,使用一定的网络协议与网络上其它计算机或终端交换数据。 2) 一个指定的管道。 3) 一块内存区域。 .NET中的流 在这些情况中,微软提供了一个 .NET 基类 来读写内存数据使用 处理网络数据。 读写管道没有相应 第 5 页 共 28 页 的流类,但有一个常见的流类 ,如果要编写一个这样的类,可以从这个基类继承。 流对外部数据源不做任何假定。 外部源还可以是代码中的一个变量,使用流在变量之间传输数据的技术是一个非常有用的技巧,可以在数据类型之间转换。 在网络编程中我们经常会使用到网络中的流对象: NetworkStream。 它实现了 .NET 中标准的 Stream 机制,即可以使用 NetworkStream 通讯网络套接字用标准的流操作进行网络数据的读写。 它提供以下的功能: 1) 一个统一的从网络中读取数据的方法 2) 与其他的 .NET 流兼容,这样你可以很容易地移植程序。 同步、异步、阻塞和 非阻塞 同步( synchronous):所谓同步方式,就是发送方发送数据包以后,不等接受方响应,就接着发送下一个数据包。 异步( asynchronous):异步方式就是当发送方发送一个数据包以后,一直等到接受方响应后,才接着发送下一个数据包。 阻塞( Block):指执行此套接字的网络调用时,直到调用成功才返回,否则此套节字就一直阻塞在网络调用上,比如调用 StreamReader 类的 Readlin ( )方法读取网络缓冲区中的数据,如果调用的时候没有数据到达,那么此 Readlin ( )方法将一直挂在调用 上,直到读到一些数据,此函数调用才返回 非阻塞( Unblock):指在执行此套接字的网络调用时,不管是否执行成功,都立即返回。 同样调用 StreamReader 类的 Readlin ( )方法读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。 在 Windows 网络通信软件开发中,最为常用的方法就是异步非阻塞套接字。 平常所说的 C/S(客户端 /服务器)结构的软件采用的方式就是异步非阻塞模式的。 其实在用 C#进行网络编程中,我们并不需要了解什么同步、异步、阻塞和非阻塞的原理和工作机制,因 为在 .Net FrameWrok SDK 中已经已经把这些机制给封装好了。 C/S模型 客户机 /服务器模型,又称为 Client/Server 模型,简称 C/S 架构。 C/S 计算技术在信息产业当中占有重要的地位。 这种客户机 /服务器模型是一种非对称式编程模式。 该模式的基本思想是把集中在一起的应用划分成为功能不同的两个部分 ,分别在不同的计算机上运行,通过它们之间的分工合作来实现一个完整的功能。 对于这种模式而言其中一部分需要作为服 第 6 页 共 28 页 务器,用来响应并为客户提供固定的服务;另一部分则作为客户机程序用来向服务器提出请求或要求某 种服务。 在此“服务器”是指能在网络上提供服务的任何程序。 服务器接受网络上的请求,完成服务后将结果返回给申请者。 对于简单的服务,把每个请求用一个 IP 数据报发给服务器,服务器用另一个数据报返回响应。 客户机和服务器都是独立的计算机。 当一台连入网络的计算机向其他计算机提供各种网络服务 (如数据、文件的共享等 )时,它就被叫做服务器。 而那些用于访问服务器资料的计算机则被叫做客户机。 严格说来,客户机 /服务器模型并不是从物理分布的角度来定义,它所体现的是一种网络数据访问的实现方式。 采用这种结构的系统目前应用非常广泛。 如 宾馆、酒店的客房登记、结算系统,超市的 POS 系统,银行、邮电的网络系统等。 各种网络服务器基本都遵循同样的算法 :创建一个端口 (Port),接受从网络上来的客户服务请求,完成计算后把结果返回给客户,如此反复。 即时通信 协议 协议是一系列的步骤,它包括双方或者多方,设计它的目的是要完成一项任务。 即时 通信 协议,参与的双方或者多方是即时 通信 的实体。 协议必须是双方或者多方参与的,一方单独完成的就不算协议。 这样在协议动作的过程中,双方必须交换信息,包 括控制信息、状态信息等等。 这些信息的格式必须是协议参与方同意并且 遵循的。 好的协议要求清楚,完整,每一步都必须有明确的定义,并且不会引起误解。 对每种可能的情况必须规定具体的动作。 有许多的 IM 系统,如 AOL IM、 Yahoo IM 和 MSN IM,它们使用了不同的技术,而且它们互不兼容。 为了创建即时 通信 的统一标准,人们经过了多次尝试: IETF 的对话初始协议( SIP)和 即时 通信 对话初始协议和表示扩展协议( SIMPLE)、应用交换协议( APEX)、显示和即时 通信 协议( PRIM)及基于 XML 且开放的可扩展 通信 和表示协议( XMPP)协议(常称为 Jabber 协议)。 人 们多次努力,试图统一各大主要 IM 供应商的标准( AOL、 Yahoo 及 Microsoft),但无一成功,且每一种 IM 仍然继续使用自己所拥有的协议。 本系统目的在于实现一个简单的即时通信过程 ,没有必要采用通用的比较复杂的即时通信协议,因此使用了简单定义的 XML 标记定义来规范即时通信的各种网络信息, 在网络中传输序列化的 XML 语言。 第 7 页 共 28 页 3 系统总体设计 需求分析 软件针对局域网内部用户,实现用户间的即时通信。 需要分别实现服务器端和客户端的软件设计。 服务器端负责监听用户连接请求,负责连接数据库存储用户信息,负 责发送给用户好友信息,负责发送心跳报文检查用户在线状态并即时让用户更新好友在新信息。 客户端发起主动连接,向服务器请求登录或者注册。 客户端可以修改昵称,可以加已知用户为好友(类似于 MSN的好友添加功能)。 客户端之间可以发起 P2P 模式的聊天,可以传送文件。 系统基本架构 基于 C/S架构的 即时通信软件便于对用户信息进行统一管理和保存 ,面向特定的用户,对信息的安全控制能力很强。 为了减轻服务器负担,客户端之间的信息传递是采用 P2P模式的,服务器只负责用户的注册,登录和用户在线状态的检验。 基本结构如图: C L I E N TC L I E N T注 册 和 登 录 信 息S E R V E R返 回 信 息注 册 和 登 录 信 息返 回 信 息聊 天 信 息 , 文 件 传 输图 1 系统基本架构 功能模块设计 CLIENT: : (1)可以完成客户端注册,客户端可以通过填写信息进行注册,信息被发送到服务器端。 : (1)客户可以输入 账号 和密码进行 登录 ,客户端会发送 登录 信息等待服务器响应, 登录 成功后会发出 登录 成功信息并刷新好友列表。 : 第 8 页 共 28 页 (1)密码修改:应该有密码修改功能 (2)信息修改:可以更改一些注册信息 : (1)即时聊天模块:客户端与客户端之间建立线程进行即时聊天,也包含有 简单的 对称 加解密算法功能。 (2)好友列表:可以对好友列表进行添加删除等动作 : (1)文件传输:文件传输功能 SERVER: :对客户端传送的注册信息进行判断。 (1)HASH 加密:对用户的 账号 和密码信息进行 HASH 加密 (2)重复用户检查:将加密后信息与已存在 账号 进行比较,检查是否 账号 已存在,如果存在就返回错误信息 (3)注册成功:将可成功注册的用户 账号 和密码写入数据库内,并向客户端返回成功信息 : (1)对密码和信息修改请求进行判断,执行和返回修改成功信息 回应 : (1)对 登录 的 账号 和密码进行加密检查后发回正确或错误情况,并记录上线信息 (2)好友列表发送:给成功 登录 的 账号 发送好友列表及好友 上线信息 (3)上线信息发送:给成功 登录 的 账号 的好友发送在线信息(包括 IP,端口等等信息) : (1)对 登录 ,在线,离线的用户情况进行统计,记录和通知 (2)心跳测试:每隔一段时间发送报文测试用户是否因意外原因离线 (3)情况记录:将用户 登录 时间, IP,下线时间等信息记录入数据库 第 9 页 共 28 页 逻辑 图 注 册登 录注 册 回 应在 线 情 况C L I E N T S E R V E R用 户 信息 管 理密 码 修 改信 息 修 改取 得 好 友列 表修 改 回 应H A S H加 密注 册 成 功登 录 回 应好 友 列 表发 送上 线 信 息发 送注 册 信息 检 查注 册 失 败YN心 跳测 试N离 线文 件 传 输消 息 加 密消 息 解 密即 时 聊 天在 线 情 况记 录Y 图 2 逻辑 图 数据库设计 实体关系图 服务器是作为记录和读取数据库信息的载体,与客户端关系并不复杂,这里需 第 10 页 共 28 页 要重点 考虑客户端之间的关系。 用户与用户之间的关系是较为特殊的递归关系,即描 述发生在两个相同实体上的关系。 ER 图如下: 图 3 ER图 详细列表 数据库 包含两个表,分别为 记录 用户信息的 TCP_Userinfo 和记录用户好友信息的 TCP_Friendinfo。 详细设计见下面两表: 表 1 用户信息表 TCP_UserInfo TCP_Userinfo 列(属性)名 类型 主键 宽度 是否允许为空 备注 UserID numeric Y 9 NOT NULL 自增长 UserAccount nchar N 20 NOT NULL 用户帐号 UserNickname nchar N 20 NOT NULL 用户昵称,可重复 UserEmail nchar N 20 NOT NULL 用户 EMAIL JoinDate nchar N 35 NOT NULL 注册日期 LastLogin nchar Y 20 NOT NULL 最后登录 IP UserIP nchar Y 20 NOT NULL 用户 IP UserFav varchar N 100 NOT NULL 用户好友分组,有默认值 UserQuestion nchar Y 20 NOT NULL 密码问题 UserAnswer nchar Y 20 NOT NULL 密码答案 UserPassword nchar N 20 NOT NULL 用户密码 UserOnline int N 4 NOT NULL 在线状态, 1 在, 0 不在 表 2 用户好友表 TCP_FriendInfo TCP_Userinfo 列(属性)名 类型 主键 宽度 是否允许为空 备注 InfoID numeric Y 9 NOT NULL 自增长 UserID nchar N 20 NOT NULL 用户 ID FriendID nchar N 20 NOT NULL 用户好友 ID FriendGroup nchar N 20 NOT NULL 用户好友分组 聊天 文件传输 n n 用户 ID 好友 ID 状态 IP 客户端 账号 昵称 Email ID 密码 好友分组 状态 客户端 账号。毕业设计论文-tcp协议下的即时通讯软件的实现
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。