即时通信系统的开发与设计毕业设计论文(编辑修改稿)内容摘要:

立起一个稳定、免费的网站系统。 攀枝花学院本科毕业设计(论文) 系统开发关键技术及开发环境 5 socket 套接字介绍 socket 套接字,是支持 TCP/IP 的 网络通信 的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。 Socket 套接字包括: 流套接字( SOCK_STREAM): 流套接字用于提供面向连接、可靠的数据传输服务。 该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。 流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制 协议 ,即 TCP( The Transmission Control Protocol) 协议。 数据报套接字( SOCK_DGRAM): 数据报套接字提供了一种 无连接 的服务。 该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。 数据报套接字使用 UDP( User Datagram Protocol) 协议 进行数据的传输。 由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。 原始套接字( SOCK_RAW): 原始套接字与 标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写 内核 没有处理的 IP 数据包,而流套接字只能读取 TCP 协议 的数据,数据报套接字只能读取 UDP 协议的数据。 因此,如果要访问其他 协议 发送数据必须使用原始套接字。 IP 网际协议 IP是 TCP/IP 的心脏,也是网络层中最重要的协议。 IP 层接收由更低层(网络接口层例如以太 网设备驱动程序)发来的数据包,并把该数据包发送到更高层 TCP 或 UDP 层;相反, IP 层也把从 TCP 或 UDP 层接收来的数据包传送到更低 层。 IP 数据包是不可靠的,因为 IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。 IP 数据包中含有发送它的主机的地址(源地址)和接收它的主机的 地址(目的地址)。 高层的 TCP 和 UDP 服务在接收数据包时,通常假设包中的源地址是有效的。 也可以这样说, IP 地址形成了许多服务的 认证基础,这些服务相信数据包是从一个有效的主机发送来的。 IP确认包含一个选项,叫作 IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。 对于一些 TCP 和 UDP 的服务来说,使用了该选攀枝花学院本科毕业设计(论文) 系统开发关键技术及开发环境 6 项的 IP 包好像 是从路径上的最后一个系 统传递过来的,而不是来自于它的真实地点。 这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。 那么,许多依靠 IP 源地址 做确认的服务将产生问题并且会被非法入侵。 TCP 如果 IP 数据包中有已经封好的 TCP 数据包,那么 IP 将把它们向‘上’传送到TCP 层。 TCP 将包排序并进行错误检查,同时实现虚电路间的连接。 TCP 数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如 Tel 的服务程序和客户程序。 应用程序轮流将信息送回 TCP 层, TCP 层便将它们向下传送到 IP 层,设备驱动程序和物理介质,最后到接收方。 面向连接的服务(例如 Tel、 FTP、 rlogin、 X Windows 和 SMTP)需要高度的可靠性,所以它们使用了 TCP。 DNS 在某些情况下使用 TCP(发送和接收域名数据库),但使用 UDP 传送有关单个主机的信息。 udp 协议简介 UDP 协议是英文 UserDatagramProtocol 的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。 包括 网络视 频会议系统在内的众多的客户 /服务器模式的网络应用都需要使用 UDP 协议。 UDP 协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天, UDP仍然不失为一项非常实用和可行的网络传输层协议。 与我们所熟知的 TCP(传输控制协议)协议一样, UDP 协议直接位于 IP(网际协议)协议的顶层。 根据 OSI(开放系统互连)参考模型, UDP 和 TCP 都属于传输层协议。 UDP 是 OSI 参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层 完成,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是 IP 协议 与上层协议的接口。 UDP 协议适用 端口 分别运行在同一台设备上的多个 应用程序。 UDP 提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据, UDP 传输的可靠性由应用层负责。 UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。 但是正因为 UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如 DNS、 TFTP、 SNMP 等。 攀枝花学院本科毕业设计(论文) 系统开发关键技术及开发环境 7 c/s 模式介绍 C/S 结构,即大家熟知的客户机和 服务器 结构。 它是软件 系统体系结构 ,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和 Server端来实现,降低了系统的通讯 开销。 目前大多数应用软件系统都是 Client/Server 形式的两层结构,由于现在的软件应用系统正在向分布式的 Web应用发展, Web和 Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。 这也就是目前应用系统的发展方向。 C/S 结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用 “ 功能分布 ” 原则。 客户端 完成数据处理, 数据表示 以及 用户接口 功能;服务器端完成 DBMS( 数据库管理系统 )的核心功能。 这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。 Client 和 Server 常常分别处在相距很远的两台计算机上, Client 程序的任务是将用户的要求提交给 Server 程序,再将 Server 程序返回的结果以特 定的形式显示给用户; Server 程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。 C/S 结构的优点是能充分发挥 客户端 PC的处理能力,很多工作可以在客户端处理后再提交给服务器。 对应的优点就是 客户端 响应速度快。 具体表现在以下两点: ( 1)应用服务器运行数据负荷较轻。 最简单的 C/S 体系结构的数据库应用由两部分组成,即客户应用程序和 数据库服务器 程序。 二者可分别称为前台程序与后台程序。 运行数据库服务器程序的机器,也称为应用服务器。 一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的 电脑上,对应于 数据库服务器 ,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。 ( 2)数据的储存管理功能较为透明。 在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号可以重复、必须有 客户 才能建立定单这样的规则。 所有这些,对于工作在前台程序上的最 终用户,是 “ 透明 ” 的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。 在客户服务器架构的应用中,前台 程序 不是非常 “ 瘦小 ” ,麻烦的事情都交给了服务器和网络。 在 C/S 体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。 攀枝花学院本科毕业设计(论文) 系统开发关键技术及开发环境 8 随着互联网的飞速发展, 移动办公 和分布式办公越来越普及,这需要我们的系统具有扩展性。 这种方式 远程访问 需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。 客户端需要安装专用的客户端软件。 首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏, 都需要进行安装或维护。 特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。 还有, 系统软件 升级时,每一台客户机需要重新安装,其维护和升级成本非常高。 对 客户端 的操作系统一般也会有限制。 可能适应于 Win98, 但不能用于 win20xx 或 Windows XP。 或者不适用于 微软 新的操作系统等等,更不用说 Linux、 Unix 等。 传统的 c/s 体系结构 虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是 Client 端还是 Server 端都还需要特定的软件支持。 由于没能提供用户真 正期望的开放 环境, C/S 结构的软件需要针对不同的操作系统开发不同版本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上 局域网 用户同时使用。 而且代价高, 效率低。 C/S 架构的劣势还有高昂的维护成本且投资大。 首先,采用 C/S 架构,要选择适当的数据库平台来实现数据库数据的真正 “ 统一 ” ,使分布于两地的 数据同步 完全交由 数据库系统 去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立 “ 实时 ” 的数据同步,就必须在两地间建立实时的通讯连接,保持两地的 数据库服务器 在线运行,网络管理工作人 员既要对服务器维护管理,又要对 客户端 维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。 其次,传统的 C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。 在 JAVA 这样的跨平台语言出现之后, B/S 架构 更是猛烈冲击 C/S,并对其形成威胁和挑战。 多线程技术介绍 多线程 是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个执行绪,进而提升整体处理性能。 具有 这种能力的系统包括对称多处理器、多核心处理器以及芯片级多处理器( Chiplevel multithreading)或同时多线程( Simultaneous multithreading)处理器。 软件多线程。 即便处理器只能运行一个线程,操作系统也可以通过快速的在不同线程之间进行切换,由于时间间隔很小,来给用户造成一种多个线程同时运行的假象。 这样的程序运行机制被称为软件多线程。 如微软的 Windows 作业系统和 Linux就是在各个不同的执行绪间来回切换,被称为单人多任务作业系统。 而 DOS 这类文字攀枝花学院本科毕业设计(论文) 系统开发关键技术及开发环境 9 接口作业系统在一 个时间只能处理一项工作,被视为单人单工作业系统。 除此之外,许多系统及处理器也支持硬件多线程技术。 对称多处理机( SMP)系统具有多个处理器,所以具有真正的同时执行多个线程的能力; CMP 技术通过在一块芯片上集成多个核心也具有真正的多线程能力; CMT 技术则稍有不同,有的是依靠硬件执行线程切换来获得多线程能力,操作系统不再负责线程切换,因而这部分开销可以减少甚至消除,这方面典型的例子是 Sun 的 UltraSPARCT1,它同时综合了 CMP和 CMT。 微软的 Windows 20xx 以后的操作系统皆支持多线程与超线程技术。 攀枝花学院本科毕业设计(论文) 系统设计 10 3. 系统设计 系统分析 功能需求分析 即时通信系统是基于 c/s 模型的网络通信软件,分为客户端和服务器端两个部分。 客户端依靠服务器获取所需的网络资源,服务器为客户端提供必需的网络资源。 服务器端包含数据库模块和消息处理两个模块;数据库模块用于存储用户个人信息、用户好友列表、和用户连接信息;消息处理模块包含查看好友资料、注册处理、登录处理、聊天处理、修改个人信息、添加好友、删除好友。 具体功能结构图如图 图 服务器功能模块图 客户端包含登录和注册两个部分;登录模块包括 用户信息修改、好友管理、消息功能三个模块。 用户信息修改模块:实现修改个人信息。 好友管理模块:实现好友的分组显示、添加好友、删除好友、查看好友资料。 消息功能模块:实现发送消息、接收消息、聊天记。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。