《基于p2p的网络视频聊天系统的设计与实现本科毕业论文.doc》由会员分享,可在线阅读,更多相关《基于p2p的网络视频聊天系统的设计与实现本科毕业论文.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、南 阳 理 工 学 院 本科生毕业设计(论文) 学院(系): 软件学院 专 业: 软件工程 学 生: 指导教师: 完成日期 2011 年 4 月南阳理工学院本科生毕业设计(论文)基于P2P网络视频聊天系统VideoChat SystemBased onP2PNetwork总计: 毕业设计29页表 格: 2 个插 图: 8 幅南 阳 理 工 学 院 本 科 毕 业 设 计(论文)基于P2P视频聊天系统VideoChat SystemBased onP2PNetwork学 院(系): 软件学院 专 业: 软件工程 学 生 姓 名: 学 号: 指 导 教 师(职称): ) 评 阅 教 师: 完 成
2、日 期: 2011年5月 南阳理工学院Nanyang Institute of Technology基于P2P视频聊天系统软件工程专业摘要随着互联网技术的飞速发展,基于网络的即时通信给人们带来诸多便利,也成为当今网络应用的主流。聊天工具作为当今使用最为广泛的即时通信工具之一,可以方便人们随时随地进行在线交流,比如腾讯公司的QQ聊天软件。本毕业设计就是模拟QQ聊天软件,开发一个包括文字聊天、文件传输、视频交流等功能的聊天软件。本设计的开发采用P2P结构,在基于.NET开发环境下,使用C#编程语言进行本软件的开发。本文首先论述国内外聊天工具的发展情况和现今的发展方向,并对开发环境和开发语言进行了简
3、单介绍;对本设计所要开发的多功能聊天软件作了较为详细的需求分析,并给出了多功能聊天软件的设计方案,主要功能包括文字聊天、文件传输、语音聊天及视频聊天等;本毕业设计主要实现的是多功能聊天软件的部分功能,文字聊天、视频聊天等功能,主要实现文字聊天视频聊天功能,达到预期目标;通过运行、测试与分析说明,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。关键词视频;聊天;P2P模式;C#VideoChat SystemBased onP2PNetworkSoftware EngineeringLI YiTongAbstract:With the rapid development of Interne
4、t technology, the instant messenger based on network brings many conveniences to the people, also becomes the focus of network application in present. Chat is one of the most widespread instant messengers, may facilitate the people to carry on the online information exchange at anytime and anywhere,
5、 such as the QQ chat software of Ten cent Company. Develops chat software, which includes the writing, file transfer, audio and video chat and so on.This design development uses the P2P structure, uses the C# programming language to carry on developing this software based on .NET environment. This p
6、aper first elaborates the development situation of domestic and foreign chats tool and the development direction nowadays, and has carried on the simple introduction to the development environment and the development language. The demand of multi-function chat software is analyzed in detail, and its
7、 plan is provided. Its main functions include the writing, file transfer and video chat and etc. This graduation project mainly realizes the partial functions of multi-function chat software, namely the audio chat, the video chat and so on, which mainly realizes the writing and chat and video chat.
8、Finally, this software achieves the anticipated target. Through the running, the test and analysis, it shows, this multi-function chat software is stable, reliable, and has some practical values.Key words: Video;chat; P2Pmodel; C #目 录1 引言11.1 课题背景11.2国内外研究现状和发展趋势11.3 本课题研究的意义11.4 小结22 技术分析32.1 运行环境3
9、2.2 P2P技术32.3 TCP协议32.4 UDP协议42.5 TCP/IP体系结构42.6 TCP协议与UDP协议的比较52.7摄像头采集62.8小结63 系统设计63.1 系统目标63.2 主模块63.3系统功能模块图:73.4系统流程分析83.5视频模式的设计93.6文本聊天的设计103.7 用户注册和解析113.8数据库设计124系统实现134.1系统类库设计134.2主界面的实现134.3 用户注册和解析:144.4视频传输的实现154.4 文本聊天的实现174.4.1聊天信息发送和接收174.5小结19结束语20参考文献20致谢21基于P2P视频聊天系统1 引言1.1 课题背景
10、随着互联网技术的发展,互联网应用越来越丰富。互联网以其独特的传播方式吸引了大量用户,同时也给人们带来了许多便利,譬如可以借助于网络进行相互交流、信息传递等。聊天工具作为互联网中运用最为广泛的通信工具之一,它可以让用户之间进行即时的交流和信息的传递。聊天工具的出现可以说是基于互联网通信交流方式的历史性变革,它已经渐渐取代了原来效率低、费用高的如信件、电报的通信方式,以其快速、交互、简便的方式给用户的交流提供了简单、易用的信息平台,成为现今应用最为广泛的即时通信工具之一。随着相关技术的日益发展,用户对功能的需求不断提高。为了更好地服务于用户,聊天工具的功能也在不断地完善。在未来的网络时代中,聊天工
11、具将以即时通信为其基本特点,并与各种网络应用整合,同时随着无线网络的广泛应用,它将成为未来不可缺少的一种通信软件。1.2国内外研究现状和发展趋势通过对国内外关于对等网络的技术文章进行分析,利用P2P技术对网络连接方式和结构的设计研究主要是如何在互联网上实现点对点的连接,如何充分利用互联网上的各种资源,将互联网从一个基于文件的网页和电子邮件网络转变成一个动态的、颗粒状的网络。而在运用P2P技术针对局域网不同主机之间进行通讯的技术文章还是比较少,虽说在局域网实现点对点连接比起在互联网是简单的多,但是也不能够忽略局域网每台计算机对网络资源共享的愿望,特别是在没有服务器的情况下。不过技术是不分大小的,
12、我们还是可以借鉴P2P技术在互联网上的应用。P2P技术的发展以及P2P与网格技术的结合,影响了整个计算机网络的概念和人们的信息获取模式,真正实现了“网络就是计算机,计算机就是网络”。 它提供了很多吸引人的特性,比如自主性(self-organization) 、负载平衡(load-balancing) 、有效性(availability) 、容错冗余(fault tolerance) 和匿名(anonymity)等。P2P引导网络计算模式从集中式向分布式偏移,也就是说网络应用的核心从中央服务器向网络边缘的终端设备扩散。这使人们在Internet上的共享行为被提到了一个更高的层次,使人们以更主动
13、深刻的方式参与到网络中去。1.3 本课题研究的意义在当今信息时代,信息通信已成为这个世纪必不可少的组成部分,随着互联网技术的发展,聊天软件作为即时性通信工具的主流,已被越来越多的人所喜爱。在中国,上网的用户几乎都用腾讯QQ进行聊天。当前腾讯QQ的注册帐户已经超过4.3亿,是中国用户最多、最为流行的聊天工具。起初的QQ只支持文字聊天,随着相关技术的发展,腾讯QQ也不断的自我完善,增加众多实用的、人性化的功能,得到了许多用户的支持与喜爱。现如今腾讯公司已经初步完成了面向在线生活产业模式的业务布局:构建了QQ、QQ.com、QQ游戏以及QQ移动手机门户这四大网络平台,形成了规模巨大的网络社区。在满足
14、用户信息传递与知识获取需求方面,拥有QQ.Com门户、QQ即时通讯工具以及年初收购的Foxmail电子邮件等;在满足用户群体交流和资源共享方面,腾讯推出的个人博客Q-Zone将与访问量极大的论坛、聊天室、QQ群相互协同;在满足用户个性展示和娱乐服务方面,腾讯拥有非常成功的虚拟形象产品QQshow、QQpet(宠物)和QQGame(游戏)QQMusic/Radio/LiveTV(音乐/电台/电视直播)等,另外对手机用户提供了彩铃、彩信等无线增值业务;在用户的交易需求方面,专门为腾讯用户设计开发的C2C电子商务拍卖网已经上线,并和整个社区平台无缝整合。像QQ这样聊天工具已经逐渐适应了时代的发展,市
15、场的需求,给人们提供了全方位的信息服务平台,使用户在互联网上的生活更加丰富多彩,它不仅带来了巨大的商业价值,而且也给人们的生活带来了无比的欢乐与便利。1.4 小结随着用户对软件功能的需求不断提高,即时通讯的产品也不断地更新换代。即时通讯的发展不论是在基础应用方面还是在扩展应用方面都有着飞跃。为了满足用户的需求,包括腾讯公司的聊天软件QQ在内,许多即时性聊天工具都推出了语音聊天、视频聊天功能模块。本文主要对聊天软件的语音聊天和视频聊天等相关功能的实现原理进行了研究。本文首先对聊天软件的发展以及其对人们的生活有何影响作了简述,并对开发环境和工具进行了相应说明并对此聊天软件系统进行了较为详细的分析;
16、进而提出了该多功能聊天软件的设计方案。2 技术分析2.1 运行环境操作系统: Windows XPwindows 2003 Server或者windows 2003 Server数据库:mySQL开发工具:Visual Studio 20082.2 P2P技术 P2P是peer-to-peer的缩写,peer在英语里有“(地位、能力等)同等者”、“同事”和“伙伴”等意义1。这样一来,P2P也就可以理解为“伙伴对伙伴”的意思,或称为对等联网。目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。简单的说,P2P直接将人们联系起来,让人们通过互联网直接交互。P2P使得网络上的沟通变
17、得容易、更直接共享和交互,真正地消除中间商。P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P另一个重要特点是改变互联网现在的以大网站为中心的状态、重返“非中心化”,并把权力交还给用户。基于P2P技术的局域网聊天工具,我们把该软件命名为“TopTalk”。它的主要作用是实现同在一个局域网上的每个用户之间进行即时通讯.“TopTalk”是一个建立在纯P2P模型下的聊天工具,所以完全不用额外的服务器支持就可以进行点对点通讯,使用起来也非常方便。它采用了基于UDP网络的传输协议进行底层的消息传送,在此基础上用广播消息实现上下线提示和聊天室功能,点对
18、点的消息实现两人之间的聊天通讯1、2.3 TCP协议在因特网中,TCP层是位于IP层之上,应用层之下的运输层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一
19、个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。在TCP特点中,我们知道客户端只能和服务器通信,无法和另一个客户端直接通信,所以,所有的客户一律先把聊天信息发送给服务器,并告诉服务器该信息发送给哪个客户的。服务器收到信息后,再将该信息“转发”给另一个客户。TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。TCP将它的信息送到更高层的应用程序,例如Te
20、lnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方2。2.4 UDP协议用户数据报协议UDP(User Data Protocol)是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是 IP 协议与上层协议的接口。UDP 协议适用端口分别运行在同一台设备上的多个应用程序。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP
21、通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效率高;但也正因为如此,它的可靠性不如TCP协议高3。 UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些
22、面向查询-应答的服务。2.5 TCP/IP体系结构TCP协议和IP协议指两个用在Internet上的网络协议(或数据传输的方法)。它们分别是传输控制协议和互连网协议。其中TCP是提供传输层服务,而IP则是提供网络层服务。IP:网间协议(Internet Protocol) 负责主机间数据的路由和网络上数据的存储。同时为ICMP,TCP,UDP提供分组发送服务。用户进程通常不需要涉及这一层。ARP:地址解析协议(Address Resolution Protocol)此协议将网络地址映射到硬件地址。RARP:反向地址解析协议(Reverse Address Resolution Protocol
23、)此协议将硬件地址映射到网络地址ICMP:网间报文控制协议(Internet Control Message Protocol)此协议处理信关和主机的差错和传送控制。TCP:传送控制协议(Transmission Control Protocol)这是一种提供给用户进程的可靠的全双工字节流面向连接的协议。它要为用户进程提供虚电路服务,并为数据可靠传输建立检查。(注:大多数网络用户程序使用TCP)UDP:用户数据报协议(User Datagram Protocol)这是提供给用户进程的无连接协议,用于传送数据而不执行正确性检查。FTP:文件传输协议(File Transfer Protocol)
24、允许用户以文件操作的方式(文件的增、删、改、查、传送等)与另一主机相互通信。SMTP:简单邮件传送协议(Simple Mail Transfer Protocol)SMTP协议为系统之间传送电子邮件。TELNET:终端协议(Telnet Terminal Procotol)允许用户以虚终端方式访问远程主机。HTTP: 超文本传输协议(Hypertext Transfer Procotol)。TFTP: 简单文件传输协议(Trivial File Transfer Protocol)2.6 TCP协议与UDP协议的比较TCP协议与UDP协议特点的比较首先,TCP是一种面向连接的协议,而UDP是无
25、连接的。这其中的区别在于:第一,TCP协议是以连接作为协议数据的最终目标的。UDP协议则是以目标端口作为协议数据的最终目标。因此,TCP的协议端口是可以复用的,UDP协议的端口在同意时间只能为一个应用程序所用。第二,一个连接是由两个端点构成的。要使用TCP进行通信必须先在通信双方之间建立连接,连接的两端必须就连接的一些问题进行协商(如最大数据段长度、窗口大小、初始序列号等),并为该连接分配一定的资源(缓冲区)。UDP协议则不需要这个过程,可以直接发送和接收数据。其次,TCP提供的是可靠的传输服务,而UDP协议提供的是不可靠的服务。使用不可靠的服务进行传输时,数据可能会丢失、失序、重复等。而可靠
26、的服务能保证发送方发送的数据能原样到达接收方。最后,TCP提供的是面向字节流的服务。应用程序只需将要传输的数据以字节流的形式提交给TCP协议,在连接的另一段,数据以同样的字节流顺序出现在接收程序中。而UDP协议的传输单位是数据块,一个数据块只能封装在一个UDP数据包中10。2.7摄像头采集本系统利用avicap32.dll和User32.dll完成摄像头的视频采集。avicap32.dll和User32.dll是Windows API应用程序接口的相关模块。avicap32.dll接口可以方便地对摄像头和其他视频硬件进行AVI电影和视频的截取10。2.8小结我们项目的需求是可以在局域网内实现方
27、便快捷的通讯和资源共享,搭建一个完善的聊天环境。在局域网内实现点对点的聊天并不是一件难事,在现有的网络协议UDP、TCP/IP和Socket的支持下都可以轻易的实现通讯。而重点解决的问题是如何在没有固定服务器的环境下营造一个完整的和可知的通讯环境,局域网内的每一个用户可以知道其他用户的上下线情况和有选择的进行通话。目前,在局域网内有一个方法是最适合用来实现上下线功能的,那就是用广播的方式,所有用户都固定一个端口来处理广播或UDP数据,这样就可以在这个端口上进行底层的消息互通了。当前,P2P技术已经趋向成熟,它的几个特点(没有传统的服务器概念、可扩展性好、完全对称)都非常切合软件开发的思路。3
28、系统设计3.1 系统目标根据用户对聊天系统的要求,本聊天软件可以实现以下目标:(1)用户管理(2)当有用户登录时会在客户端在线用户中添加显示出来(3)当有用户下线时会从客户端在线用户中删除其信息(4)实现客户端间的文本聊天(5)实现客户端间的视频聊天 (6)实现聊天记录的保存3.2 主模块主模块设计如表3-1所示:表3-1 主模块设计模块子模块功能主模块整体设计总界面对系统的功能认知3.2.1 功能模块功能模块设计如表3-3所示:表3-3 功能模块设计文本聊天模块1.发送信息2.接受信息3.查看信息视频聊天模块1.发起视频2.接收视频3.视频传输4.终止视频用户管理模块1.IP地址显示2.聊天
29、记录查看3.聊天记录删除3.3系统功能模块图:系统设计功能模块图如图3-1所示: 图3-1 系统功能结构图3.4系统流程分析系统流程分析如图3-2加载套接字库初始化套接字绑定本地机到套接字向指定IP地址发送数据关闭套接字库结束聊天创建线程用于接受数据3-2系统流程分析图聊天系统流程图,如图3-3同意用户1用户2回应视频请求发送视频请求回应请求为同意停止视频停止视频回应请求为同意接收视频NY文本信息发送文本信息接收3-3流程图此系统采用了P2P结构,系统流程图如上图所示,使用此视频聊天系统不需要注册,其信息的发送是通过必须要知道对方的IP地址和监听端口,在P2P中,各个对等节点可以随时加入,随时
30、离开,对等节点的连接时间和IP地址并不一定是固定的。在完成对等节点定位和资源搜索之后,就可以用UDP发送文字聊天,使用UDP无需建立连接,直接可以在对等节点之间通信。客户端用来向服务器端发起一个连接,等待服务器的允许接入确认。若服务器端同意连接请求,接收到服务器的同意连接信号后,开启接收信息线程,并置消息发送事件为Enable,通信双方就可以进行文本聊天了。若服务器端拒绝连接,则释放Socket连接并关闭网络流。若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,3.5视频模式的设计视频数据的发送与接收同样采用了Socket编程,在发送视频时,通过Socket端口
31、进行监听。当收到对方发送的包含视频请求信息和对方IP地址、端口号等信息后,如果同意请求,则向请求方发送包含了本地IP、端口号的接受视频信息,这样就建立了连接,开始视频聊天。用户1通过摄像头进行视频采集,经过压缩后,向用户2发送采集后的视频数据。用户2接收到用户1发送的视频数据并将其进行解压,然后在用户2的采集窗口上播放,这样视频的传输就完成了。如图3-4:3-4视频模块数据传输流程图在进行视频数据传输前,两台计算机必须先要建立连接,其原理和语音聊天建立连接的原理一致。用户1向用户2发送视频请求,用户2在接收到用户1的请求后,给用户1发送收到请求后的回应信息,如果同意用户1的请求则用户1与用户2
32、开始视频聊天,如果不同意就终止视频聊天。3.6文本聊天的设计同意用户1用户2回应文本信息发送文本信息停止文本信息发送NY3-5文本聊天流程图 开启服务器,文本聊天窗体加载成功后,将启动监听线程,服务器主要是负责监听局域网内的用户的连接请求。收到客户发起的连接请求后,若服务器处于空闲状态,弹出消息提示框,对请求进行处理,服务器可以选择接受或者拒绝客户端的连接。若同意连接,则返回给客户端同意信号,开启服务器的接收信息线程,并置消息发送事件为Enable。客户端收到服务器返回的同意信号后,也开启接收信息线程,并置消息发送事件为Enable。通信双方就可以进行文字聊天了。流程如图3-5所示。3.7 用
33、户注册和解析 3-6 PNRP名称解析基本过程P2P架构中的每个对等节点为了能被其他对等节点识别,首先要将自己注册到一个群中。名称解析即为获取具有指定对等名的其他对等节点使用的IP地址和端口号的过程。PNRP中没有使用索引服务器,为了完成解析,群中的每个对等节点都存储一些PNRPID的缓存条目。PNRP缓存中的每个条目都含有PNRPID及应用程序的IP地址和端口号。 寻找对等点目标是否在Catch中,如果否想最邻近的邻居发送搜索请求,然后目标是否在Catch中,如果是返回响应给请求节点,如果否,搜索是否更接近目标节点,如果否驳回请求发搜寻请求到目标节点的次临近节点,如果是到下一站发送搜索请求,
34、检查目标是否在Catch中。基本过程如图3-6所示。3.8数据库设计根据需求分析,需要以下两张表对系统所需要的数据进行存储,如图3-3,图3-4:3-3用户基本信息1表名用户基本信息表序号字段名数据类型缺省值NULL键值备注1用户编号 char(24)否主键2用户昵称 nvarchar(50)是3用户性别char (4)是4IP地址 nvarchar(25)是5当前状态Char(3)是6好友列表nvarchar(4000)是以“,”分开7参加的群列表nvarchar(2000)是以“,”分开3-4群体信息表3表名群体表序号字段名数据类型缺省值NULL键值备注1群体编号 char(24)是2群体
35、名称 char(100)是3群体级别nvarchar(3)是高、一般4群体口号char(100)是5创建人及管理员char(500)是用“,”分开4 系统实现4.1系统类库设计根据需求分析和系统设计,在系统内实现以下几个类库:FormP2P类:界面类。负责界面显示及界面相关业务逻辑处理。MyPNRP类:PNRP名称解析类。提供利用PNRP协议注册对等名称及进行名称解析的方法。WebCamera类:视频捕获类。提供操作摄像头的基本操作。User类:保存与某个通信玩家的基本信息。UdpChat类:利用UDP发送及接收聊天信息的方法。4.2主界面的实现 4-1 系统界面在文本框内输入文本信息,然后选
36、择对方主机,点击发送,文本信息就显示在聊天框中,如果想要视频,可以点击视频呼叫按钮,如果对方同意视频,那么在视频框内会显示自己和对方的视频信息,也可以点击本地预览,预览本地视频信息。如图4-14.3 用户注册和解析: 4-2名称注册及解析过程创建Peer Name对象之后,需要将该对等名称实例注册到指定群中。PeerNameRegistration类提供了注册对等名的方法可通过设定PeerNameRegistration对象的相关属性将对等名称实例和IP地址,端口号相关联,同时也可以根据需要为对等名称设置备注和其他信息。进行对等名称注册时,首先要将PeerName对象和IPEndPoint对相
37、关联。在PNRP中,群定义了名称的注册及解析的范围。注册时可通过设置PeerNameRegistration对象的Cloud属性将对等名称注册到指定群中。最后,调用PeerNameRegistration对象的Start方法将对等名称注册到指定的PNRP群中,以便其他对等节点可以解析该名称。如图4-2相关代码如下:class MyPNRP static PeerNameRegistration peerNameRegistration; static List strPeerInfos = new List(); public static int port; / / 将PNRP Name 注
38、册到Cloud中 / public static bool registerPeer(String strMyPeerName) try PeerName peerName = new PeerName(strMyPeerName, PeerNameType.Unsecured); / 以PeerName创建PeerNameRegistration实例 peerNameRegistration = new PeerNameRegistration(peerName, port); peerNameRegistration.UseAutoEndPointSelection = true; / 设
39、定PNRP Peer Name的其他描述信息 peerNameRegistration.Comment = PNRP Peer Name的其他描述信息; / 设定用PeerNameRegistration的Data描述信息 peerNameRegistration.Data = System.Text.Encoding.UTF8.GetBytes(String.Format(描述信息,注册时间0, DateTime.Now.ToString(); peerNameRegistration.Start(); return true; catch (Exception ex) Console.Wr
40、iteLine(ex.ToString(); return false; / / 解析对等名称 / / 对等名称 public static PeerNameRecordCollection ResolverPeer(String myPeerName) Thread.Sleep(500); strPeerInfos.Clear(); / 建立PeerName实例 PeerName peerName = new PeerName(0. + myPeerName); / 建立PeerNameResolver实例 PeerNameResolver resolver = new PeerNameRe
41、solver(); / 对PNRP Peer Name进行解析 PeerNameRecordCollection pmrcs = resolver.Resolve(peerName); return pmrcs; 4.4视频传输的实现在视频传输的过程中,需要以下几个命令对流程进行控制:Query:false:询问对方对方是否接收视频请求,参数false表示命令字符串之后无字节序列发送。在单击“视频呼叫”按钮时,向选中的用户发送Query信息。接收方在收到Query消息之后,弹出对话框,提示用户选择是否接收视频请求,而后将用户选择反馈给发送方。Image:true:发送一帧视频图像,参数true
42、表示命令字符串之后有字节序列发送Stop:false:告知对方停止接收视频,接收方收到Stop命令后,停止接收视频信息。相关代码如下:/ / 发送视频数据 / private void Send_One_Capture(BinaryWriter bw) /将字节数组存放到内存流中 MemoryStream ms = new MemoryStream(); try /将摄像头的一帧数据存放到剪贴板中 myCamera.CaptureWindow(); /从剪贴板中获取图片 data = Clipboard.GetDataObject(); /将截图存放到内存流中 if (data.GetDataPresent(typeof(System.Drawing.Bitmap) bmap = (Image)(data.GetData(typeof(System.Drawing.Bitmap); bmap.Save(ms, ImageFormat.Bmp); /将截图以JPEG形式保存到内存流中