P2P传输的开源库 Libjingle库 综述
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
通过上文(P2P的原理和常见的实现方式(为libjingle开路))我们知道,因为NAT设备没有固定标准的原因,导致并不能100%的实现P2P,但是根据现在通用的ICE&STUN的方式,P2P的成功率可以达到90%多。前段时间在找使用这种方法实现的成熟库,最后猛然发现libjingle就在那里。
通过一个多星期的研究,在此记录一下libjingle库的大致情况,如有不妥,希望朋友们可以留言或者邮件(peakflys@gmail.com)指正。
Libjingle综述
Libjingle是一个方便实现P2P传输的开源库,由google公司开发,并与2005年12月15日发布第一个版本,可以粗略的看成是Jingle协议的C++实现库(peakflys注:只是和Jingle协议非常相似,并不完全兼容,区别以后介绍),Google Talk即是基于这个库开发的。通过libjingle我们可以建立一个直通的网络连接(无视中间的NAT、防火墙、中继服务器和代理等),无需特别关心Session建立的细节(加解密、格式等),直接进行数据的交换。它也实现了一些辅助的功能,例如XML的解析和网络代理的处理。我们通过它可以实现如下的应用:
·一个多用户的语音聊天应用
·一个多用户的视频会议应用
·一个多用户的现场音乐、流媒体应用
·一个点到点的文件传输和共享的应用
目前库的版本是0.7.1(2012年10月2日发布),支持Windows和UNIX/Linux,开源许可用的是Berkeley-style,这也就意味着,可以任意的修改和扩展它来更好的满足自己产品的需要。
库的SVN路径:http://libjingle.googlecode.com/svn/trunk/talk
值得注意的是:
① Libjingle库本身的实现依赖于一些第三方库,例如:语音聊天依赖于Linphone或者GIPS,这取决于使用者的平台
② Libjingle只是一个客户端的实现, relay Server协议和STUN协议(如果需要),还需要自己实现
实现relay Server后的网络结构(STUN使用 网络上现有的,例如Google等公司提供的公有STUN服务器):
实现relay Server和STUN Server后的网络结构:
STUN协议的实现不难,网上也有很多开源的代码实现,关键是需要一些资源的部署(需要两个公网IP)
P2P的关键实现在客户端,通过使用libjingle我们可以快速的构造一个健壮高效的P2P Client,如果仅仅是实现类似于Skype或者QQ那样的两人或者几人聊天,服务器方面实现就非常容易。但是如果要实现大用户参与的语音室,那么我们就得专注于服务器广播包的优化了。
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
![](/assets/blank.gif)
P2P传输的开源库 Libjingle库 综述相关推荐
- P2P传输的开源库:Libjingle库 综述
转自:http://blog.csdn.net/educast/article/details/39472349 其它:http://www.cnblogs.com/welen/articles/50 ...
- linux tcp server开源,GitHub - 06linux/cellnet: 高性能,简单,方便的开源服务器网络库...
cellnet cellnet是一个高性能,简单,方便的开源服务器网络库 自由混合编码,业务代码无需调整. TCP和html5的应用都可以直接使用cellnet迅速搭建服务器框架. 与Java的Net ...
- 值得推荐的C/C++开源框架和库
原文链接:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm 留档备查,非常强大的C/C++开源项目总结文档- 值得学习的C语言开源项目 ...
- 最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)
在项目开发中,除了对数据的展示更多的就是对文件的相关操作,例如文件的创建和删除,以及文件的压缩和解压.文件压缩的好处有很多,主要就是在文件传输的方面,文件压缩的好处就不需要赘述,因为无论是开发者,还是 ...
- Android开源项目及库整理总结
自己总结的Android开源项目及库. github排名https://github.com/trending, github搜索:https://github.com/search UI Aweso ...
- iOS、mac开源项目及库
1.用来生成 @3x 的图片资源对应的 @2x 和 @1x 版本,只要拖拽高清图到 @3x 的位置上,然后按Ctrl+Shift+A即可自动生成两张低清的补全空位.当然你也可以从 @2x 的图生成 @ ...
- 【 AI 简报 2020930 期】NVIDIA开源C++标准库等热点新闻等你来!
导读:本期为 AI 简报 2020930期,将为您带来过去一周关于 AI 新闻 9 条,其他互联网圈内新闻 5 条,希望对您有所帮助~ 有更好的建议或者意见请在下方留言~ AI 1. AI养猪.智能超 ...
- 嵌入式相关开源项目、库、资料------持续更新中
学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言.单片机.开源项目.物联网.操作系统.Linux.计算机等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资 ...
- PKplayer(P2P播放器)开源P2P播放器综述
国内现在很多直播平台都是基于服务器+CDN方式实现的,包括YY.斗鱼等等,这种方式对于服务器的性能要求很高,而且在用户量增大的时候,服务器压力也会越来越大,用户的体验也会受到很大影响.而基于P2P方式 ...
最新文章
- linux在多核处理器上的负载均衡原理
- 进阶高端,2017年vivo手机用实力说话
- 【Vue】component学习笔记
- Java实现算法导论中Pollard的rho启发式方法
- 若依微服务版怎样修改Nacos中配置文件使Url不受权限认证跳过Token验证
- WebIDE sandbox
- 小学计算机三年级课程目录,小学生信息技术课本目录.doc
- kafka 集群的部署安装
- 中国喷墨卡片打印机行业市场供需与战略研究报告
- 自学python后自己接单-分享一下我的Python自学历程,分享下我自己学习方法
- CSS 实现盒子水平垂直居中
- 【数据结构】EOJ 1006. 线性链表的插入与删除
- python爬数据是什么意思-python爬虫爬取的数据可以做什么
- JavaScript - 自定义属性 -
- 解决tensorflow 调用bug Running model failed:Invalid argument: NodeDef mentions attr 'dilations'
- Surface Pro5 如何安装Win10系统
- ubuntu 12.04安装截图功能的软件 gimp
- IOS主题切换ThemeManager
- 如何将视频转化为gif
- 矿产资源规划管理信息化建设研究
热门文章
- js中内存泄漏的几种情况
- linux用户间文件互传,windows和linux间互传文件
- java公车系统_今天早上公交车上想到的系统的实现模式
- xlrd-操作excel 背景颜色-转载
- 凯撒密码中有数字怎么办_破解犯罪大师8.25突发事件中医生的密码(未解慎入)...
- C++开发工具 VTK技术实现三维重建CT医学影像PACS系统
- request.getParameter()方法
- day4-转自金角大王
- canvas简单的粒子效果的实现
- jQuery-select2 官方文档笔记(一)——基础应用