文件传输与聊天系统设计与实现计算机毕业设计论文内容摘要:
L, int* lpSockAddrLen = NULL )。 rConnectedSocket 为当来了一个新的连接的时候所给的一个套接字的引用,以后就可以用这个新的套接字进行通信。 lpSockAddr 为接收到的客户机的地址,指针类型。 lpSockAddrLen 为接收到的客户机地址的长度的指针。 ④ 数据的发送与接收 CAsyncSocket 和 Socket API 中接收发送函数是一致的。 ⑤ 重载函数 CAsyncSocket 是异步模式,因此在进行一些处理的时候比如监听 (Listen)或接收 (Accept)时它不会阻塞后面的操作而是直接返回,为了能够处理相关事件必须要重载 CAsyncSocket 的 相关函数。 在服务器端一般都会重载以下函数: virtual void OnAccept(int nErrorCode)。 ////当有接收事件发生时调用该函数 virtual void OnReceive(int nErrorCode)。 ////当有数据到达的时候调用该函数 virtual void OnClose(int nErrorCode)。 ////当客户端关闭套接字的时候调用该函数 在客户端一般会重载以下函数: virtual void OnClose(int nErrorCode)。 ////当有服务器关闭套接字的时候调用该函数 virtual void OnConnect(int nErrorCode)。 ///当连接到服务器的时候调用该函数 virtual void OnReceive(int nErrorCode)。 ////当接收到数据的时候调用该函数 开发环境及相关知识介绍 所有代码将在 Windows XP SP2+ 环境下开发;服务器的数据库支持使用 Access+ODBC 处理;密码算法使用国际上标准的 DES 算法和 MD5 单向加密算找毕业设计、项目源码、编程视频,就上码农网 manong365 第 11 页 共 45 页 法来处理。 找毕业设计、项目源码、编程视频,就上码农网 manong365 第 12 页 共 45 页 3 文件传输与聊天系统系统 分析 文件传输与聊天系统的开发概要 开发目的以及内容要求 熟悉即时通信软件的应用环境及背景,熟悉即时通信软件的常用开发技术,主要是网络技术, SOCKET 编程技术,网络数据库技术,以及网络安全技术。 软件开发基于 WINDOWS 平台在 VC 上实现;按照软件工程的思想从需求分析着手,进行总体设计,详细设计,编码及调试等步骤; SOCKET 可以使用 API 也可以使用已有类;通信部分软件的设计与开发是本设计的重点。 采用 CS 体系结构和 P2P 方式通信的思想进行软件总体设计;撰写用以保证通信安全的密码算法,设计 相关的密钥管理方案。 该软件开发的技术指标 软件功能完整,应有即时消息通信、文件传输等基本功能,能支持的客户端的个数不少于 254 个;软件界面友好;通过服务器进行消息中转;要求至少能应用于局域网环境,最好能应用于 INTERNET 环境。 应用数据库对通信用户及通信消息、活动日志等进行管理;能实现查询操作;对传输活动及消息进行加密管理,采用的算法应是国际上著名的算法,算法实现可以利用已有的 API 函数,借鉴现有成熟的代码,也可以自主完成;有完整的无明显漏洞的密钥管理方案及实现。 该软件开发的功 能描述 基本功能描述 ⑴ 用户的注册 通过服务器的用户管理,提供用户的注册功能。 用户只有通过注册的方式才可以与其他注册的用户进行信息的交流。 注册的信息最重要的就是用户的昵称以及密码,当然还包括其他个人资料信息。 用户唯一的标志是服务器提供的用户号码,当且仅当用户提出注册请求的时候,服务器才根据数据库中的信息提供新的用户一个用户号码,用户通过号码和个人密码进行后续的登陆操作。 ⑵ 用户的登陆 通过服务器的用户管理,提供用户的登陆功能。 用户只有通过登陆的方式才可以进入主界面获取其好友列表,然后才可以进行信息的交 流和其他操作。 用户的登陆操作会在服务器进行相关的记录,服务器可以随时查询在线用户的信息。 用户的找毕业设计、项目源码、编程视频,就上码农网 manong365 第 13 页 共 45 页 登陆应该是安全的,号码和密码信息都传输到服务器的过程中会经过动态加密,即时是同一个用户在同一地点进行多次登陆的时候,在网络传输的登陆相关信息也不是相同的,这才可以保证登陆的最大化安全。 ⑶ 添加好友功能 用户在注册并成功登陆后可以获取其好友列表,最初的时候每个用户都是没有任何好友的,因此本设计需要提供可以添加好友的功能以便让用户有信息沟通的对象。 不但可以添加在线的好友对于不在线的好友也可以发出添加好友的请求,服务器 应该根据不同的用户的状态进行不同处理,当用户不在线的时候,应该将添加好友的请求信息保存在服务器的数据库中,以便当被添加者上线的时候将该添加请求发送出去。 服务器对于添加好友的请求需要将相关信息进行数据库的操作。 添加好友是个双向过程,当一方添加成功了另一方的时候,两者都需要在自己的好友列表中添加一个好友信息。 ⑷ 删除好友功能 用户不仅可以添加好友也可以删除好友。 当用户向服务器提出删除好友的请求后,服务器需要进行数据库的处理以便删除好友的记录在用户的信息里面得到更新,同时也需要通知被删除者被删除的过程。 删除好友 的操作也是一个双向的过程,在客户的双方都要将对方在自己的好友列表中删除掉。 这和添加好友是一致的。 ⑸ 消息传送功能 这是一个最基本的功能,即时通信最基础的要求就是要进行通讯信息的传送。 具体表现为当一方客户需要向另一发客户发送消息的时候,只需要在好友列表中选择该好友,继而在弹出的对话框中输入通信内容,点击发送按钮后该消息将通过服务器的中转转发到接收方的客户端并弹出消息聊天对话框进行显示。 这里传送消息有两种情况,其一是对方是在线用户,那么服务器马上可以进行转发而不用有任何的延迟;其二是对不在线的用户,如果对方不 在线那么服务器需要将传送的信息保存在数据库中,一旦对方上线的时候再将未转发的信息发给该上线者。 ⑹ 文件传输功能 这个也是基本功能之一。 登陆成功后的双方用户为了某种要求需要进行文件的传输,显然文件传输应该是点对点的并且使用 TCP 连接才能保证文件传输的可靠性。 一方用户 A 点击文件传输的选项继而选择要传输的文件名,此时在该用户实际已经建立起一个 TCP 监听套接字,在另一方的客户 B 将接收到对于文件传输的接收请求,同意或者拒绝接收文件。 当客户 B 选择接收的时候即将调用 connect 函数远程连接到客户 A,然后进行文件的传输。 文件的传输是分段处理的因为对于大找毕业设计、项目源码、编程视频,就上码农网 manong365 第 14 页 共 45 页 文件来说一定要进行分段分割的传输。 ⑺ 查找用户功能 本设计需要提供用户的查询功能。 某用户可以查询到当前在线的用户以及指定信息的用户。 这里的指定信息主要是指用户号码,通过用户的号码来查询用户的个人信息。 当然还可以通过昵称、国家、地区、年龄、性别等信息进行模糊查询。 ⑻ 个人信息修改 本设计提供个人信息的修改功能。 当个人用户需要修改自己的某个资料时,比如自己的密码,自己的昵称等,用户将修改好的信息传送给服务器,服务器根据相关信息进行数据库的修改将该用户的资料更新。 ⑼ 查看好 友信息 本设计提供查看好友信息的功能。 对于某个好友,客户端向服务器发送查看该好友信息的请求,服务器操作数据库提取相关信息然后传送给客户端。 客户端接收到好友信息后进行显示。 ⑽ 服务器的日志记录功能 对于每个客户的活动,比如注册,登陆,上线时间等服务器都会进行日志的记录,以便于服务器的管理。 ⑾ 服务器的后台管理 服务器的后台管理表示服务器通过查询数据库可以了解所有用户的信息,可以统计在线的人数,可以群体发布一些系统的公告。 ⑿ 服务器网络处理 该功能是整个文件传输与聊天系统的核心。 服务器应该可以协调多用户的 请求服务,当用户的请求消息来临时能够通过开辟线程的方式来进行并行处理,服务器对客户的应答应该时快速的,对用户来说不应该感觉到有延迟。 附加功能描述 ⑴ 用户状态改变功能 用户可以改变自己的状态,比如在线,隐身,忙碌,离线等。 用户状态的改变先通知服务器,服务器再将该用户状态改变的通知发送给该用户所有在线的好友,一旦好友接收到此通知后,将进行界面的处理,将这个用户的状态在自己的好友列表中修改。 ⑵ 用户退出客户端程序的功能 当用户选择退出客户端软件的时候,该客户需要通知服务器下线通知,以便服务器能了解该用户的 状态信息,同时进行相关的数据库处理。 当某用户退出系统的找毕业设计、项目源码、编程视频,就上码农网 manong365 第 15 页 共 45 页 时候,服务器需要通知该用户的其他好友,使得其他好友能明白该用户已经下线,与用户状态改变的功能是一致的。 ⑶ 用户保持在线的激活功能 该功能表示用户和服务器在一定的时候内需要进行互相的激活,以便服务器能够准确的知道某个用户还在线。 该功能的提出是因为用户可能会非法退出程序,比如非法关机,死机等情况,这个时候客户端软件无法正常的告诉服务器自己的退出请求。 服务器将定时给在线用户发送激活消息,在一定时间内用户若没有应答,即做出该用户已经下线的判断,并做出相关的处理。 系统用例图: 图 系统用例图 文件传输与聊天系统的应用层协议设计以及相关数据结构 数据包格式定义 为了让通信双方遵守一定的规则,必须要定义通信数据包的格式,如图 32 所示为本设计定义的数据包结构。 找毕业设计、项目源码、编程视频,就上码农网 manong365 第 16 页 共 45 页 版本号 功能号 数据内容 加密后的长度 未加密前的原始数据内容长度 要传输的数据内容 4 个字节 4 个字节 4 个字节 4 个字节 长度由前面的字段决定 图 数据包结构 前面的 4 个字段构成了数据包头部,后面的为数据内容。 换而言之,本设计的每个数据包都由数据包头部和数 据内容组成: 数据包=数据头部 +数据内容 其中: ① 版本号 版本号为该数据包的版本系统号,这样的设计是便于以后系统的扩展;另一方面也可以判断该数据包是不是合法的数据包,当服务器或者是客户端接收到的数据不是以指定的版本号开头说明该数据包是不是本系统要求的,那么可以一开始就剔除掉,以免后面错误的发生。 版本号的长度为 4 个字节。 ② 功能号 功能号用于指定该数据包的用途。 每个数据包都具有特定的功能作用,服务器或者是客户端对于接收到数据包就是根据不同的功能号才进行不同处理。 也只有通过功能号才可以区分不同的数据包。 功 能号的长度为 4 个字节。 ③ 数据内容加密后的长度 因为本设计的加密系统只是对数据内容进行加密,数据包头部是不会被加密的。 该字段指明了原始的数据内容进行加密后的长度,因为加密系统对数据加密后的密文长度可能是改变了的。 本字段长度为 4 个字节。 ④ 未加密前的原始数据内容长度 本字段 4 个字节,记录数据内容在未加密之前的长度,和③字段配合只用足可以让加密后的数据内容解密还原。 ⑤ 要传输的数据内容 该字段的内容在传输前经过了加密,这里讨论未加密前的数据内容格式。 不同功能号对应的数据内容也是不一样的。 根据功能号定义了不 同数据内容的格式,数据内容的定义和功能号是一一对应的,比如若是功能号为 a 的数据包,那么它的数据内容的结构定义为 struct content_a,依次类推。 下面介绍所有的数据内容格式,里面出现的数据类型在附录中均有定义。 (1) 功能号 0 功能描述:客户端与服务器之间的激活消息,客户端在登陆成功后就发送该消息;找毕业设计、项目源码、编程视频,就上码农网 manong365 第 17 页 共 45 页 服务器每隔一定的时间就发送该消息给所有在线的用户。 宏定义: define OP_ACTIVE 0 数据内容定义: struct content_0 { char userNum[MAX_USERNUM]。 }。 数据内容描述:若该消息由服务器接收,那么 userNum 表示发送者的号码;若该消息由发送,那么 userNum 表示接受者的号码。 (2) 功能号 1 功能描述:客户请求注册,发送该消息给服务器。 宏定义: define OP_REG_REQ 1 数据内容定义: struct content_1 { MYINFO myself。 }。 数据内容描述: myself 为 MYINFO 的结构体类型,里面填充了在注册时需要的各种资料信息。 (3) 功能号 2 功能描述:服务器对客户端注册应答。 宏定义: define OP_REG_RESPONSE 2 数据内容定义: struct content_2 { bool OK。 char userNum[MAX_USERNUM]。 int errCode。 }。 数据内容描述: OK。文件传输与聊天系统设计与实现计算机毕业设计论文
相关推荐
夹具时 应优 先考虑通用夹具。 使用 通用夹具无法装夹 、或者不能保证被加工工件与加工 工序 的定位精度时,才采用 专用夹具。 专用夹具 的定位精度较高,成本也较高。 专用夹具的作用为: ( 1)保证产品质量 ( 2)提高加工效率 ( 3)解决车床加工中的特殊装夹问题 ( 4)扩大机床的使用范围 第 18 页 使用专用夹具可以完成非轴套、非轮盘类零件的孔、轴、槽和螺纹等的加工
由于诸多原因 ,目前很多 职业院校的实训条件较差,规模较小,与实际工作环境之间有着相当大的差距。 随着振兴东北老工业基地战略的实施,各级职业学校对数控专业有着浓厚的兴趣,但苦于没有实训场所和专业教师,为此,建立辐射范围广、能够实现资源共享的实训基地,在此基础上组成职业教育集团,能够迅速改变这种现状,改变数控人才大量短缺的现状。 数控技术专业职业教育实训基地建设项目 22
度高,它们对保证加工质量以及提高劳动生产率和降低机械加工工艺成本有重要作用。 但降低机械加工工艺成本是以提高毛坯制作成本为代价的。 在选择毛坯时要以实际出发,除了要考虑零件的作用、生产纲领和零件的结构以外,还要充分考虑现实的工作环境和条件,所以这个零件选择 45 棒材,它用于轧制生产、价廉、物美,有残余应力,预先热处理。 机床配置 ⑴ 床类型的选择 根据所加工零件的几何形状选用相应的数控机床加工
单片机, 12 时钟 /机器周期和 6 时钟 /机器周期可以任意选择 [2]。 主要特性如下 [3]: : ~ ( 5V单片机) /~ ( 3V单片机) 8051单片机, 6 时钟 /机器 周期和 12 时钟 /机器周期可以任意选择,指令代码完全兼容传统 8051. : 0~ 40MHz,相当于普通 8051的 0~ 80MHz,实际工作频率可达 48MHz 512字节 RAM 8K字节