IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> metaRTC5.0编程之p2p网络穿透(stun)指南 -> 正文阅读

[网络协议]metaRTC5.0编程之p2p网络穿透(stun)指南

概述

音视频通信时为了节省服务器带宽,通信效率最好的就是p2p,但是在现实的应用场景中,我们的客户端都是在大局域网内部的,stun协议就是要解决如何穿透这些局域网实现p2p。

metaRTC5.0最新版本支持stun,使p2p在互联网上利用网络穿透技术实现通信。

下载源码

https://github.com/metartc/metaRTC/releases/tag/5.0.022icon-default.png?t=M5H6https://github.com/metartc/metaRTC/releases/tag/5.0.022https://gitee.com/metartc/metaRTC/releases/5.0.022icon-default.png?t=M5H6https://gitee.com/metartc/metaRTC/releases/5.0.022

?metaRTC5.0编程

metaRTC5.0 p2p stun编程有两种模式:

  1. websockt+stun
  2. http+frpc(ngrok)+stun

配置参数

代码配置参数

 strcpy(m_context->avinfo.rtc.iceServerIP,"182.92.163.143"); //stun服务器地址
 m_context->avinfo.rtc.iceStunPort=3478; //stun服务器端口
 m_context->avinfo.rtc.hasIceServer=1; //1:启用stun 0:关闭stun

或者在配置文件yang_config.ini中配置

[rtc]
hasIceServer=1
usingDatachannel=1
iceStunPort=3478
iceServerIP=182.92.163.143
audioQueueCount=5
vidoeQueueCount=5

模式一(websockt+stun)

代码在libmetartc5/src/yangp2p/YangP2pRtcIce.cpp中

//发起连接到对端
int32_t YangP2pRtcIce::connectPeer(int32_t nettype, string server,int32_t localPort,int32_t pport,string app,string stream) {
	int32_t ret = 0;
	YangPeerConnection* sh=(YangPeerConnection*)calloc(sizeof(YangPeerConnection),1);
    ....配置参数.....
    //初始化YangPeerConnection
	yang_create_peerConnection(sh);
    sh->init(&sh->peer);

	char* localSdp; //本端sdp
	char* remoteSdp=(char*)calloc(12*1000,1); //对端sdp
	//向stun服务器发送stun request取得外网地址和端口
	if(m_context->avinfo.rtc.hasIceServer){
		if(sh->requestStunServer(&sh->peer)!=Yang_Ok) yang_error("request stun server fail!");
	}
    //取得本端sdp
	sh->createOffer(&sh->peer, &localSdp);
	
    将sdp通过信令服务传输到对端
	

	//取得对端sdp后,启动metartc
	ret=sh->setRemoteDescription(&sh->peer,remoteSdp);
}
//取得对端sdp后, 调用sh->createAnswer(&sh->peer,answer);
//取得answer后,通过信令服务传会对端
int32_t YangP2pRtcIce::addPeer(char* remotesdp,char* answer,char* remoteIp,int32_t localPort,int* phasplay) {
   配置参数...
   //初始化YangPeerConnection
	yang_create_peerConnection(sh);
    sh->init(&sh->peer);

	//向stun服务器发送stun request取得外网地址和端口
	if(m_context->avinfo.rtc.hasIceServer){
		if(sh->requestStunServer(&sh->peer)!=Yang_Ok) yang_error("request stun server fail!");
	}
   //取得answer Sdp
	ret = sh->createAnswer(&sh->peer,answer);
    ....取得answer后,通过信令服务传会对端

	//取得对端sdp后,启动metartc
	ret = sh->setRemoteDescription(&sh->peer,remotesdp);

	.....
}

模式二(http+frpc(ngrok)+stun)

在原来metap2p5的demo代码中修改,修改文件libmetartc5/src/yangp2p/YangP2pRtc.cpp

通过frpc(ngrok)等映射http,用浏览器或者客户端直接访问外网映射地址即可,操作模式和原来模式不变。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 11:09:04  更:2022-07-03 11:09:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:37:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码