基于p2p的网络视频聊天系统的设计与实现内容摘要:

个相应的确认 (ACK);如果发送端实体在合理的往返时延 (RTT)内未收到确认,那么对应的数据(假基于 P2P 视频聊天系统 4 设丢失了)将会被重传。 TCP 用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。 在 TCP 特点中,我们知道客户端只能和服务器通信,无法和另一个客户端直接通信,所以,所有的客户一律先把聊天信息发送给服务器,并告诉服务器该信息发送给哪个客户的。 服务器收到信息后,再将该信息“转发”给另一个客户。 TCP 协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系 统往往使用 TCP 协议传输数据。 TCP 将它的信息送到更高层的应用程序,例如 Tel 的服务程序和客户程序。 应用程序轮流将信息送回 TCP 层, TCP 层便将它们向下传送到 IP 层,设备驱动程序和物 理介质,最后到接收方 [2]。 UDP协议 用户数据报协议 UDP( User Data Protocol) 是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是 IP 协议与上层协议的接口。 UDP 协议适用端口分 别 运行在同一台设备上的多个应用程序。 它是面向非连接 的协议,它不与对方建立连接,而是直接就把数据包发送过去。 UDP 适用于一次只传送少量数据、对可靠性要求不高的应用环境。 比如,我们经常使用 “ping” 命令来测试两台主机之间 TCP/IP 通信是否正常,其实 “ping” 命令的原理就是向对方主机发送 UDP 数据包,然后对方主机确认收到数据包,如果数据包到达的消息及时反馈回来,那么网络就是通的。 例如,在默认状态下,一次 “ping” 操作发送 4个数据包。 大家可以看到,发送的数据包数量是 4 包,收到的也是 4 包(因为对方主机收到后会发回一个确认收到的数据包)。 这充分说明了 UDP 协 议是面向非连接的协议,没有建立连接的过程。 正因为 UDP 协议没有连接的过程,所以它的通信 效率 高;但也正因为如此,它的可靠性不如 TCP 协议高 [3]。 UDP 与 TCP 位于同一层,但对于数据包的顺序错误或重发。 因此, UDP 不被应用于那些使用虚电路的面向连接的服务, UDP 主要用于那些面向查询 应答的服务。 TCP/IP体系结构 TCP 协议和 IP 协议指两个用在 Inter 上的网络协议(或数据传输的方法)。 它们分别是传输控制协议和互连网协议。 其中 TCP 是提供传输层服务,而 IP 则是提供网络层服务。 IP: 网间协议 (Inter Protocol) 负责主机间数据的路由和网络上数据的存储。 同时为ICMP, TCP, UDP 提供分组发送服务。 用户进程通常不需要涉及这一层。 ARP:地址解析协议 (Address Resolution Protocol)此协议将网络地址映射到硬件地址。 基于 P2P 视频聊天系统 5 RARP: 反向地址解析协议 (Reverse Address Resolution Protocol)此协议将硬件地址映射到网络地址 ICMP:网间报文控制协议 (Inter Control Message Protocol)此协议处理信关和主机的差错和传送控制。 TCP:传送控制协议 (Transmission Control Protocol)这是一种提供给用户进程的可靠的全双工字节流面向连接的协议。 它要为用户进程提供虚电路服务,并为数据可靠传输建立检查。 (注:大多数网络用户程序使用 TCP) UDP:用户数据报协议 (User Datagram Protocol)这是提供给用户进程的无连接协议,用于传送数据而不执行正确性检查。 FTP:文件传输协议 (File Transfer Protocol)允许用户以文件操作的方式(文件 的增、删、改、查、传送等)与另一主机相互通信。 SMTP:简单邮件传送协议 (Simple Mail Transfer Protocol)SMTP 协议为系统之间传送电子邮件。 TELNET:终端协议 (Tel Terminal Procotol)允许用户以虚终端方式访问远程主机。 HTTP: 超文本传输协议 (Hypertext Transfer Procotol)。 TFTP: 简单文件传输协议 (Trivial File Transfer Protocol) TCP协 议与 UDP协议的比较 TCP 协 议与 UDP 协议特点的比较 首先, TCP 是一种面向连接的协议,而 UDP 是无连接的。 这其中的区别在于:第一,TCP 协议是以连接作为协议数据的最终目标的。 UDP 协议则是以目标端口作为协议数据的最终目标。 因此, TCP 的协议端口是可以复用的, UDP 协议的端口在同意时间只能为一个应用程序所用。 第二,一个连接是由两个端点构成的。 要使用 TCP 进行通信必须先在通信双方之间建立连接,连接的两端必须就连接的一些问题进行协商(如最大数据段长度、窗口大小、初始序列号等),并为该连接分配一定的资源(缓冲区)。 UDP 协议则不需要这个过程 ,可以直接发送和接收数据。 其次, TCP 提供的是可靠的传输服务,而 UDP 协议提供的是不可靠的服务。 使用不可靠的服务进行传输时,数据可能会丢失、失序、重复等。 而可靠的服务能保证发送方发送的数据能原样到达接收方。 最后, TCP 提供的是面向字节流的服务。 应用程序只需将要传输的数据以字节流的形式提交给 TCP 协议,在连接的另一段,数据以同样的字节流顺序出现在接收程序中。 而UDP 协议的传输单位是数据块,一个数据块只能封装在一个 UDP 数据包中 [10]。 基于 P2P 视频聊天系统 6 本系统利用。 是 Windows API 应用程序接口的相关模块。 接口可以方便地对摄像头和其他视频硬件进行 AVI 电影和视频的截取 [10]。 我们项目的需求是可以在局域网内实现方便快捷的通讯和资源共享,搭建一个完善的聊天环境。 在局域网内实现点对点的聊天并不是一件难事,在现有的网络协议 UDP、TCP/IP 和 Socket 的支持下都可以轻易的实现通讯。 而重点解决的问题是如何在没有固定服务器的环境下营造一个完整的和可知的通讯 环境,局域网内的每一个用户可以知道其他用户的上下线情况和有选择的进行通话。 目前,在局域网内有一个方法是最适合用来实现上下线功能的,那就是用广播的方式,所有用户都固定一个端口来处理广播或UDP 数据,这样就可以在这个端口上进行底层的消息互通了。 当前, P2P 技术已经趋向成熟,它的几个特点(没有传统的服务器概念、可扩展性好、完全对称)都非常切合软件开发的思路。 基于 P2P 视频聊天系统 7 3 系统 设计 系 统 目标 根据用户对聊天系统的要求,本聊天软件可以实现以下目标: (1)用户管理 (2)当有用户登录时会在客户端在线用户中添加显 示出来 (3)当有用户下线时会从客户端在线用户中删除其信息 (4)实现客户端间的文本聊天 ( 5)实现客户端间的视频聊天 (6)实现聊天记录的保存 主模块 主模块设计如表 31 所示: 表 31 主模块设计 模块 子模块 功能 主模块 整体设计总界面 对系统的功能认知 功 能 模块 功能模块设计如表 33 所示: 表 33 功能模块设计 文本聊天模块 视频聊天模块 用户管理模块 地址显示 基于 P2P 视频聊天系统 8 : 系统设计 功能模块图 如图 31 所示: 图 31 系统功能结构图 系统流程分析如图 32 32 系统流程分析图 加载套接字库 初始化套接 字 绑定本地机到套接字 向指定 IP 地址发送数据 关闭套接字库结束聊天 创建线程用于接受数据 基于 P2P 视频聊天系统 9 聊天系统流程图,如图 33 33 流程图 此系统采用了 P2P 结构,系统流程图如上图所示,使用此视频聊天系统不需要注册,其信息的发送是通过必须要知道对方的 IP 地址和监听端口,在 P2P 中,各个对等节点可以随时加入,随时离开,对等节点的连接时间和 IP 地址并不一定是固定的。 在完成对等节点定位和资源搜索之后,就可以用 UDP 发送文字聊天,使用 UDP 无需建立连接,直接可以在对等节点之间通信。 客户端用来向服务器端发起一个连接,等待服务器的允许接入确认。 若服务器端同意连接请求,接收到服务器的同意连接信号后,开启接收信息线程,并置消息发送事件为Enable,通信双方就可以进行文本聊天了。 若服务器端拒绝连接,则释放 Socket 连接并关闭网络流。 若已建立连接,当断开连接时,将向对方 发送断开信号,然后将释放Socket 和网络流, 设计 视频数据的发送与接收同样采用了 Socket 编程,在发送视频时,通过 Socket 端口进行监听。 当收到对方发送的包含视频请求信息和对方 IP 地址、端口号等信息后,如果同意请求,则向请求方发送包含了本地 IP、端口号的接受视频信息,这样就建立了连接,开始视频聊天。 用户 1 通过摄像头进行视频采集,经过压缩后,向用户 2 发送采集后的视频数据。 用户 2 接收到用户 1 发送的视频数据并将其进行解压,然后在用户 2 的采集窗口。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。