基于socket的即时通讯软毕业设计40论文41内容摘要:

数据,但不执行正确性检查。 ICMP 互连网控制报文协议( Inter Control Message Protocol),处理主机间的差错和传送控制。 ARP 地址解析协议( Address Resolution Protocol),负责将网络层地址转换成链路层地址。 RARP 反向地址解析协议( Reverse Address Resolution Protocol),负责将链路层地址转换成网络层地址。 TCP/IP 协议的核心是传输层协议( TCP、 UDP)、网络层协议( IP)和物理接口层,这三层通常在操作系统的内核中实现。 TCP/IP 网络环境下的应用程序设计是通过网络系统编程界面 Socket 实现的, Socket 提供应用程序与系统内核之间的网络编程接口。 协议可以是 可靠的可以是不可靠的。 可靠的协议意味着当数据通过协议传递时,协议保证数据正确传输。 可靠传输包括几个特征。 首先,为了确保数据正确传送,协议在通信应用程序之间互相交换确认信息。 也就是说,程序每次发送 一 个报文时,都期望对方发送一个相当于说: “我得到这个报文 ”的确认信息。 如果发送程序没有收到这样一个确认信息,程序将自动重新发送此报文,直到得到应答信息为止。 其次,为了确保传输的数据有效,可靠协议在每次传输时,都包含一个或更多的校验和( CRC)。 接收计算机重新计算校验和,与收到的校验和进行比较。 如果不匹配,就表明在传输 过程中发生了错误。 传输控制协议 TCP 是一个使用校验和、确认信息以及其它可靠数据传输技术的可靠协议。 相比之下,不可靠协议不能确保数据正确传输。 协议试图传输数据,但不保证成功。 而且,不可靠协议在传输失败后,并不通知发送方应用程序。 可将不可靠数据传输比作没有返回地址的信件。 如果发送地址是 错 误的,由于邮递系统不能将信退回给你,所以你就不知道信件有没有送到。 即使发送地址是正确的,也不能保证邮递系统不丢失你的信件 [8]。 TCP/ IP 协议组中存在的两个基本数据服务是:字节流服务和数据报服务。 使用字节流的协议将信息看作 一串字节流进行传输。 协议不管要求发送或接收数据的长度和传送数目,只是将数据看作一个简单的字节串流。 使用数据报的协议将信息视作一个独立长沙学院 毕业设计 (论文 ) 6 单元进行传输。 协议单独发送每个数据报 ——数据报之间不相互依赖。 例如,假设你使用字节流协议发送 5 个数据段(每个有 10 字节)和一个包含 50 字节的数据段(总共 100字节)。 连接的接收方可以按每次 20 字节读数据 (要读 5 次 )。 传输控制协议是字节流协议。 字节流协议不关心每个数据段的长度。 如果应用程序使用字节流协议发送数据,则协议能够保证连接的另一端按照发送的顺序接收数据。 相比之下,传输到 同一目的地的多个数据报可能不会按发送顺序到达。 如果接收方应用程序要求数据顺序一致,应用程序必须在数据到达后,校对这些数据。 用户数据报协议和互连网协议使用数据报传输数据。 数据报类似于信件。 如果你在同一天给同一个人邮寄两封信,你无法知道那个人先收到那封信。 同样,如果连续两天给两个人邮信,你也不能知道哪封信先收到。 收到信的顺序和发送顺序可能相反。 在 TCP/IP 术语中,端口( Port)类似于 IP 地址, IP 地址与主机地址是相联系的,端口和协议相联系。 IP 数据报保存目的和源 IP 地址,同样传输协议也保存源和目的端口号。 如果端口这个概念对你来说很陌生,请考虑计算机上的硬件端口。 你可能编写过往硬件端口送数据的程序。 例如为了打印,如果没有其它程序的话,必须向串或并端口发送数据。 PC 机给它的端口命名和编号。 例如, PC 机的并行打印端口称为 LPTl 和 LPT2,串行端口称为 COM1 和 COM2。 在 Inter 上,网络只是简单地对协议端口编号。 在 PC 机, LPT1 表示并行端口 1。 成千的 PC 机应用程序使用此方案。 多年来,程序员编写 PC 程序时都假定 LPT1 表示并行打印端口 1。 同样,程序员将每个 Inter 协议端口与一个特定的应用程序和 功能联系在一起。 Inter 包括像 FTP、 Tel 和 Mail 这样广泛使用的应用程序采用的应用协议,在Inter 上,这些应用程序使用一种叫做 “通用口分配 ”的端口。 通用口分配是特定应用程序广泛使用的一个协议端口。 像 PC 程序员使用打印端口 LPT1 用于打印, Inter 程序员也对具体应用程序使用许多协议端口。 例如,平凡文件传输协议( FTP)的通用口分配是端口号 21 的。 Tel 的通用口分配是端口号 23[8]。 客户机 /服务器模型 客户机 /服务器 ( C/S) 模型 是一种网络模型,它并不是定义 了网络的层次结构,而是描述了一种网络程序运行的方式。 客户机 /服务器模型将网络应用程序分为客户和服务器两部分。 客户方对服务器方发送信息请求,服务器方对其做出相应回答,提供服务。 在 TCP/IP 网络应用中,多数网络应用程序是使用客户机 /服务器模型设计的。 服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户程序提出了请求长沙学院 毕业设计 (论文 ) 7 信息。 此时,服务程序被唤醒并且为客户提供服务,对客户的请求做出适当的反应。 虽然基于连接的服务是设计客户 /服务器应用程序的标准,但有些服务也是可以通过数 据报Socket 提供的。 通常,网络应用程序包含两个独立的应用程序:客户程序和服务器程序。 但是,也可以设计同时完成这两种功能的程序,例如,一些服务器程序如果不能完成一个服务请求时,它将转而充当客户程序,向其它服务器程序请求信息。 这方面的一个典型例子就是提供 Inter 从域名到 IP 地址映射服务的 DNS 服务器。 为了充分理解 TCP/IP 协议族,必须理解几个重要术语。 这些术语指出了两个 TCP/IP传输协议:用户数据包协议( UDP)和传输控制协议( TCP)之间的区别。 这些术语进一步描述了与网络连接、协议可靠性以 及数据服务有关的协议特性。 当建立服务器程序时,应该将服务器程序设计成等候客户的请求。 你知道, TCP 传输层通过协议端口和应用程序(像服务器和客户)通信,也就是说,为了 接 收客户请求,服务器程序必须对传输层的一个特定协议端口进行侦听。 当服务器配置 socket 接口时,它使用 bind()函数让 Socket 执行体登记一个协议端口。 也就是说,程序告诉 Socket 执行体使用哪一个协议端口进行数据传送。 Socket 执行体接着告诉传输层某个特定协议端口已被使用,并将其收到的所有数据传送给 Socket API。 使用无连接协议 的程序和使用面向连接协议的服务器程序之间的主要相似之处是它们都必须对一个协议端口进行侦听。 例如,无连接和连接服务器程序必须在协议端口侦听客户请求。 同样,由于无连接客户程序没有和远地主机建立直接连接,所以它也必须对协议端口进行侦听,以便接收以对它服务请求产生的数据报应答。 Socket API 中的bind()函数让程序将一个本地地址(包括主机地址和协议端口)和一个 Socket 联系起来。 下面程序行显示了一个典型的函数调用: result= bind ( socket_handle, local_structure, socket_address, address_ length) 无连接客户程序也对一个协议端口进行侦听。 使用无连接协议的程序不和远地主机建立直接连接。 无连接客户程序使用数据报发送网络服务请求,它不建立点到点连接。 因此无连接客户程序必须在一个协议端口,对应答数据报进行侦听。 与服务器程序一样,无连接客户程序也使用 bind()函数让 Socket 执行体登记协议端口。 也就是说,类似服务器程序,无连接客户程序告诉 Socket 执行体使用哪个协议端口进行数据传输。 Socket执行体处理传输层内 UDP 软件模块和客户程序 之间的接口 [9]。 长沙学院 毕业设计 (论文 ) 8 第 4 章 需求分析及开发方法 需求分析 一个 即时通讯 软件应提供基于 TCP/IP 网络的即时消息传送、消息广播、实时聊天等功能。 列举如下: ( 1) 支持多账号。 ( 2) 可以同时发送同一个消息 给 一个人,通过输入对方信息。 ( 3) 可以同时发送一个消息给所有 人。 ( 4) 即使用户不在线,也能通过服务器发送离线消息。 ( 5) 提供消息、聊天的历史记录,方便对信息的查看和管理。 ( 6) 提供查看在线的人的功能。 ( 7) 用户 上线通知。 ( 8) 用户 下线更新 ( 9) 有权限的人可以发系统广播 通知 ( 10) 查看 用户 信息 ( 11) 更改个人信息 ( 12) 开机启动设置 ( 13) 主窗口总是浮在最上端 ( 14) 速度快,占用资源少 系统功能模块 根据上述 的 需求分析,并针对个人所掌握的知识和自己毕业设计时间的限制,要做到面面 俱 到是不可能的 ,并 考虑到作为局域网(校园网)聊天工具,终端用户数量较少,我设计的通讯 软件借鉴了 、聊天室等 即时 聊天工具,聊天信息采用服务器转 发方式,只要当前在线的用户都可以接收到,当然,也实现了两人之间 私聊 的 功能。 包括服务器程序和客户端程序,服务器包括聊天信息即时转发 、系统日志记录、 发送通知 、以及数据库的备份、还原、 初始化。 客户端具有登陆,注册,修改个人信息,聊天等功能。 系统功 能需求图 这个即时通讯软件系统包括服务器端和客户端,服务器端有聊天记录、系统设置、发布通告、数据库备份还原初始化、 置顶 的功能,客户端要求有登陆、注册、聊天和修改 查看 个人信息的功能,系统功能的需求图如下: 长沙学院 毕业设计 (论文 ) 9 图 系统功能需求图 开发方法介绍 目前比较成熟的信息系统开发方法有:生命周期法、原型法、面向对象法等。 生命周期法: 把一个信息系统从其提出、分析、设计和使用,直到停止使用的整个生存期视为一个生命周期。 整个生命周期划分为五个主要工作阶段:可行性分析阶段、系统分析阶段、系统设计阶段、系统实 施阶段和系统运行、维护与评价阶段。 通常采用结构化系统分析和系统设计方法,自上而下分析、设计、强调开发过程的整体性和全局性;开发过程在时间上基本按阶段进行,任务明确;结合用户需求进行开发;开发周期长,维护不方便。 适用于开发需求较明确固定的信息系统。 原型法: 是系统开发者在初步了解用户需求的基础上,开发出能实现系统 基本功能的一个原型,再根据用户对原型使用与评价的意见,提出修改方案,修改完善原型,如此反复多次,直到得到用户满意的最终系统为止。 开发过程以用户为中心,开发周期短。 适用于开发需求不够明确或不断变化的软件。 面向对象法: 以类,类的继承,聚集等概念描述客观事物以及联系。 为管理信息系统的开发提供了全新的思路,面向对象方法以对象为中心。 其特征主要有模块性,继承性和类比性,动态连接性。 其中原型 法是近几年发展起来的一种开发方法,该方法从一个初始信息要求的集合出发,在发展中逐步完善信息系统。 本 即时通讯 软件采用的是原型法。 使用原型法开发大体有以下几个步骤: ( 1) 确定系统需求。 其中包括系统的应用范围、系统开发的经费估算等。 ( 2) 设计初始原型。 包括确定需求和开发工作模型,例如屏幕格式、功能菜单、报表格式以及对关键数据和功能的说明 等。 长沙学院 毕业设计 (论文 ) 10 ( 3) 对初始原型进行需求迭代,不断进行修正或改进,直至得到一个用户满意的原型,从而终止原型迭代过程。 ( 4) 如果需要,可写出系统必要成分的严格、详细的说明。 ( 5) 原型效果考察。 考察用户新加入的需求信息和组成成分的严格说明信息,看其对原型效果的影响,是否影响到原型的有效性,如果导致原型失败,应加以修正和改进。 原型法的生命周期提供了一种完整的、灵活的、近于动态的需求定义技术。 它综合了所有提出的必要需求,建立原型就近似于预先需求的规格说明。 对应于原型的工作模型可以进行必要的剪裁和组织,以便更接近目标系统。 它可以综合用户、 领导和原型开发人员的各方需求 [10]。 图 原型法工作流程图 长沙学院 毕业设计 (论文 ) 11 第 5 章 总体设计 设计思想 服务器端和客户端需要分别设计, 除了主聊天界面外,还加上了登录界面,以便 管理。 作为 即时通讯软件系统,客户端信息全部来自于服务器,服务器端 能实时掌握所有客户登录、退出、对话情况,并能实时转发、广播给相应客户。 由于服务器要和多个客户联系,所以在设计中采用了 Winsock 控件数组的形式,其中下标为 0 的元素作为监听控件,当有客户登录、退出或者相互间发送消息时,能正确接收并作相应处理,其余控件数组元素当有 客户连接时自动装入。 客户端只需一个 Winsock 控件,应具有随时连接、断开服务器的功能,也应具有对接收到的信息做出正确分析、处理的能力。 在整个系统设计过程中,对客户端和服务器端 的 消息到达这一事件的设计和编码是系统的关键。 关键通信技术- Winsock 本系统的开发 平台 是 VB ,采用了面向网络连接的 Winsock 控件。 Winsock 是不可见控件 ,控件文件名是 ,全称为 Microsoft Winsock Cont。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。