如何使用RTP来进行P2P的通信(给有效建议即送分)

Atoric 2009-03-10 09:41:42
使用的JRTPLib库。
有公网服务器资源

如何来做端到端的RTP通信

小有技术难度的。。。
...全文
355 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gengzhiwei 2009-03-12
  • 打赏
  • 举报
回复
修改一下rtp这种限制就是的!!!
文光 2009-03-11
  • 打赏
  • 举报
回复
用户A、B上的程序不使用自动NAT转换,使用UPnP添加静态映射条目不可以?
用户A NAT-A转换后 服务器(公网) NAT-B地址转换后 用户B
RTP 10.214.18.22:6040 60.19.99.2:6040 122.234.293.2:6040 54.124.85.45:6040 24.169.54.242:6040
RTCP 10.214.18.22:6041 60.19.99.2:6041 122.234.293.2:6041 54.124.85.45:6041 24.169.54.242:6041

按照你的说法,添加的端口映射条目的外部端口也不需要是6040/6041
8082/8083....都可以,只要是连续的两个端口号就可以了。
这个你可以在路由器管理页面里面观察一下,可以使用UPnP编程添加,也可以使用手工添加虚拟服务器转发。主要的意图不就是在路由器上开两个连续的端口吗?
Atoric 2009-03-10
  • 打赏
  • 举报
回复

用户A NAT-A转换后 服务器(公网) NAT-B地址转换后 用户B
RTP 10.214.18.22:6040 60.19.99.2:8082 122.234.293.2:6040 54.124.85.45:5460 24.169.54.242:6040
RTCP 10.214.18.22:6041 60.19.99.2:8170 122.234.293.2:6041 54.124.85.45:5381 24.169.54.242:6041

假设这样的一种情况
用户A在与B进行NAT穿透后,给NAT-B发送rtp数据
通过调用JRTPLIB中的Adddestination()指定5460那个地址及端口
库里就默认的将rtcp包发送给5461而不是5381了,这就是问题
文光 2009-03-10
  • 打赏
  • 举报
回复
我不太明白你的意思,公网计算机主动向内网计算机发起连接,需要内网计算机开启端口映射,如果公网计算机需要向内网计算机的多个端口发起连接,
那么内网计算机开启多个端口映射条目不就可以了?


外部端口 内部主机 内部端口
6040 192.168.0.100 6040
6041 192.168.0.100 6041
Atoric 2009-03-10
  • 打赏
  • 举报
回复
假如 本地设定端口是 6040 6041
nat转换后就可不会是挨着的了
文光 2009-03-10
  • 打赏
  • 举报
回复
貌似RTP没有像FTP一样的ALG
Atoric 2009-03-10
  • 打赏
  • 举报
回复
恩,楼上说的是

现在假定端口是打通了 nat转换后的端口并不是像rtp里面定义的一样是相邻的 而另外一个用户想要发送个这个用户数据是 调用简单的adddestination就可以将rtp端口固定
rtcp端口只是简单的加1 这样就会有问题
文光 2009-03-10
  • 打赏
  • 举报
回复
P2P双向通信如果通过NAT设备的话,就必须实现NAT穿越,就必须在路由器上添加端口映射,如果想要编程实现,可以学习一下UPnP协议
文光 2009-03-10
  • 打赏
  • 举报
回复
如果公网资源计算机可以在Internet网关里打开端口映射
Atoric 2009-03-10
  • 打赏
  • 举报
回复
先谢谢楼上的,jrtplib的应用方法我已经基本掌握了

现在是想有两个不是内网的用户实现p2p的通信,而通信协议就是rtp
不知道如何是好了
文光 2009-03-10
  • 打赏
  • 举报
回复
linux下基于jrtplib库的实时传送实现
http://hi.baidu.com/wanhongnan/blog/item/6c5b5aa9f1986dfc1e17a2ba.html
一个例子,希望对你有点用
Atoric 2009-03-10
  • 打赏
  • 举报
回复
楼上回的都是简单的nat穿透的问题
我想知道如何用RTP协议穿透呢
基础理论篇 第1章 P2P基本概念 3 1.1 P2P网络的定义 3 1.2 P2P网络结构 4 1.2.1 集中式P2P网络 4 1.2.2 完全分布式非结构化P2P网络 5 1.2.3 完全分布式结构化P2P网络 6 1.2.4 混合式P2P网络 7 1.2.5 P2P网络和传统网络的对比 8 1.3 P2P网络的应用 9 1.4 P2P的发展 11 1.4.1 起步 11 1.4.2 发展 11 1.4.3 高峰 11 1.5 P2P技术国内外研究现状 12 1.5.1 国外相关研究 12 1.5.2 国内研究现状 12 1.6 本章总结 13 1.7 练习题 13 第2章 主流P2P系统 15 2.1 文件共享类系统 15 2.1.1 Napster 15 2.1.2 Gnutella 17 2.1.3 BitTorrent 19 2.1.4 eMule 20 2.1.5 Maze 22 2.2 即时通信类系统 24 2.2.1 Skype 24 2.2.2 QQ 26 2.2.3 GTalk 27 2.3 流媒体类系统 28 2.3.1 AnySee 28 2.3.2 PPLive 29 2.4 共享存储类系统 30 2.4.1 OceanStore 30 2.4.2 Granary 32 2.5 对等计算类系统 34 2.6 本章总结 35 2.7 练习题 35 第3章 P2P网络的基础——搜索和路由算法 36 3.1 传统搜索技术 36 3.2 P2P搜索技术的发展 37 3.3 DHT网络(结构化P2P网络)的搜索技术 39 3.3.1 DHT路由原理 39 3.3.2 Chord 40 3.3.3 Pastry 44 3.3.4 CAN 46 3.3.5 Tapestry 48 3.3.6 Kademlia 50 3.3.7 小结 53 3.4 非结构化P2P网络的搜索技术 53 3.4.1 Flooding 54 3.4.2 Modified-BFS 55 3.4.3 Iterative Deepening 55 3.4.4 Random Walk 56 3.4.5 Query Routing 57 3.4.6 Gnutella2 59 3.4.7 移动Agent 59 3.4.8 小结 60 3.5 小世界(Small World)模型 61 3.5.1 小世界模型概述 61 3.5.2 聚类分布(CD)算法 62 3.5.3 小世界网络的研究现状 66 3.6 P2P搜索技术研究的挑战 66 3.7 本章总结 67 3.8 练习题 67 第4章 P2P应用与安全 69 4.1 P2P应用面临的安全问题 69 4.1.1 P2P应用引发的版权问题 69 4.1.2 P2P应用对现有网络应用的威胁 71 4.1.3 P2P网络病毒与蠕虫 71 4.1.4 结构化P2P网络的隐患 72 4.2 P2P应用与安全技术 76 4.2.1 P2P应用中的密码学技术 76 4.2.2 P2P应用中的网络安全技术 78 4.2.3 利用P2P网络解决安全问题 82 4.3 P2P实例系统--Skype的安全性分析 88 4.3.1 Skype简介 89 4.3.2 Skype安全机制分析 93 4.3.3 Skype流量识别 96 4.4 本章总结 98 4.5 练习题 98 第5章 P2P应用的相关技术 100 5.1 P2P与网络穿越 100 5.1.1 NAT网络概念 100 5.1.2 STUN协议与NAT穿越 103 5.1.3 UDP穿越NAT 106 5.1.4 TCP穿越NAT 107 5.1.5 NAT类型检测 108 5.1.6 常见NAT穿越解决方案 111 5.2 P2P与IMS结合 112 5.2.1 什么是IMS 112 5.2.2 P2P与IMS的网络融合 112 5.3 VoIP通信基础 113 5.3.1 VoIP系统概念 113 5.3.2 H.323协议 115 5.3.3 SIP 115 5.3.4 RTP 117 5.3.5 RTSP 118 5.4 P2P和SIP的结合 119 5.4.1 P2P和SIP结合方案分析 120 5.4.2 基于Pastry设计P2P-SIP系统 122 5.5 本章总结 125 5.6 练习题 126 C++开发案例篇 第6章 P2P应用开发平台 129 6.1 Windows Peer-to-Peer Networking平台 129 6.1.1 Windows Peer-to-Peer Networking平台简介 129 6.1.2 Windows Peer-to-Peer Networking平台结构 130 6.1.3 Windows Peer-to-Peer Networking平台工作机制 132 6.1.4 Windows Peer-to-Peer Networking平台开发环境 136 6.1.5 Windows Peer-to-Peer Networking平台开发入门 139 6.2 JXTA 161 6.2.1 JXTA简介 161 6.2.2 JXTA的平台结构 162 6.2.3 JXTA的基本概念 163 6.2.4 JXTA的网络架构 166 6.2.5 JXTA开发环境 171 6.3 本章总结 175 6.4 练习题 175 第7章 P2P文件共享系统开发实例一——eMule的设计与实现 176 7.1 eMule系统概述 176 7.1.1 P2P文件共享系统的背景 176 7.1.2 eMule的设计目标 177 7.2 eMule系统原理 178 7.2.1 eMule协议原理 178 7.2.2 Kad协议原理 185 7.3 eMule系统设计 186 7.3.1 eMule系统结构概述 187 7.3.2 文件基础设施 187 7.3.3 网络基础设施 189 7.3.4 eMule通信协议 190 7.3.5 任务处理机制 191 7.3.6 Kad系统结构概述 195 7.4 eMule程序代码分析 199 7.5 eMule系统部署 223 7.5.1 系统编译和运行 224 7.5.2 系统安装与配置 225 7.5.3 文件搜索和下载 226 7.5.4 文件上传 227 7.6 eMule系统分析 228 7.7 本章总结 228 7.8 练习题 228 第8章 P2P文件共享系统开发实例二——BT的设计与实现 230 8.1 BitTorrent系统概述 230 8.2 BitTorrent系统原理 230 8.2.1 BitTorrent协议原理 231 8.2.2 BitTorrent Tracker服务器原理 234 8.3 BitTorrent系统设计 236 8.3.1 Arctic客户端系统结构概述 236 8.3.2 LibTorrent库系统结构概述 237 8.4 BitTorrent程序代码分析 238 8.4.1 Arctic客户端代码分析 238 8.4.2 LibTorrent库代码分析 260 8.5 BitTorrent系统部署 270 8.5.1 BitTorrent服务器的部署 271 8.5.2 BitTorrent客户端的部署 271 8.6 BitTorrent系统分析 271 8.7 本章总结 272 8.8 练习题 272 第9章 P2P即时通信系统开发实例——Hermes的设计与实现 273 9.1 Hermes系统概述 273 9.1.1 P2P即时通信系统的背景 273 9.1.2 Hermes系统设计目标 274 9.2 Hermes系统原理 274 9.2.1 登录认证机制 275 9.2.2 语音提取与播放机制 277 9.3 Hermes系统设计 279 9.4 Hermes程序代码分析 280 9.4.1 语音处理模块代码分析 280 9.4.2 通信模块代码分析 295 9.5 Hermes系统分析 302 9.6 本章总结 302 9.7 练习题 302 第10章 P2P流媒体系统开发实例——PeerCast的设计与实现 303 10.1 P2P流媒体系统概念 303 10.1.1 流媒体内容发布网络技术 303 10.1.2 P2P流媒体系统概述 304 10.1.3 P2P流媒体系统架构 304 10.1.4 现有系统 305 10.2 流媒体技术 305 10.3 设计P2P音视频点播系统 306 10.3.1 多媒体数据压缩 306 10.3.2 应用层QoS 306 10.3.3 应用层多播技术 306 10.3.4 流媒体同步技术 307 10.3.5 PeerCast实现分析 307 10.3.6 改造BitTorrent成为流媒体系统 311 10.4 本章总结 311 10.5 练习题 311 第11章 P2P视频点播系统开发实例——Myseelite的设计与实现 313 11.1 Myseelite系统概述 313 11.1.1 P2P视频点播系统的背景 313 11.1.2 Myseelite的设计目标 314 11.2 Myseelite系统原理 315 11.2.1 基本概念 315 11.2.2 工作机制 316 11.2.3 ACE简介 317 11.2.4 wxWidgets简介 320 11.3 Myseelite系统设计 320 11.3.1 Capture子系统 320 11.3.2 Super Peer子系统 321 11.3.3 Tracker子系统 322 11.3.4 Client子系统 324 11.4 Myseelite程序代码分析 329 11.5 Myseelite系统部署 353 11.5.1 系统编译 353 11.5.2 系统运行 353 11.5.3 轮播流程 354 11.5.4 直播流程 357 11.6 Myseelite系统分析 359 11.7 本章总结 359 11.8 练习题 3
IMLibrary4 For OurMsg4 源码 ourmsg2014(即ourmsg 3.0)即将发布,敬请关注。 ourmsg3.0新版新增功能和改进如下: 1、1台服务器支持2万人同时在线。 2、文件传输算法重写,采用滑动窗口算法,更快、更稳定。 3、音、视频没有再采用第三方组件实现。重新提供了基于.net架构的(GOOGLE公司音视频编解码标准)音视频编解码器,提供标准的RTP/RTSP协议实现网络传输,占用带宽更少。1路清晰音视频总占30KB左右带宽。 4、提供了远程协助功能(目前占用带宽约50KB)。下一版本将进行改进,占用更少的带宽资源。 5、文件传输、远程协助、音频、视频的底层传输真正实现了UDP P2P,提供了支持任何网络类型的NAT穿越(类TURN方法的NAT穿越方法,包括对称型NAT),并支持RTP/RTCP Over UDP P2P。 ourmsg2014下一步开发计划: 2014年上旬实现类TURN TCP P2P功能,新增并完成音视频会议、多媒体教学软件功能; 2014年下旬完成基于SIP 协议的VOIP开发(实现PC to phone ,phone to PC的PSTN电话网络通话功能,并支持GSM),支持企业电话总机、传真,支持与世界各大品牌厂商的呼叫中心系统连接,使用它各以在世界各地建立自己的呼叫中心。开发工作和设计已经准备就绪。如果你需要学习和了解这些系统的开发方法,敬请关注Ourmsg。 说明:本软件重点不在UI部分。对UI不满意的用户可以自行更替。ourmsg不是好的即时通讯系统,但我一直在努力,会把它做得更好!ourmsg可能会对学习即时通信系统的人提供一点点帮助。对于高手而言,请批评指证或无需关注。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧