[webrtc] 强制使用tcp传输

以前笔记,整理

webrtc默认使用UDP传输,但是也可以通过TCP传输。

使用tcp传输,需要服务器中转,turnserver,licode,janus之类的服务器。

1. 如果使用turnserver的话,只需要客户端保留 relay&&tcp类型的candidate,其他都抛弃即可

2. 如果使用的是licode,janus之类的服务器的话,默认是不支持tcp的。

因为它们底层使用都是libnice这个开源的ICE库,libnice在比较新的版本中才支持tcp的

所以需要自己编译新版本的libnice,然后重编译服务器

参考libnice的文档 https://nice.freedesktop.org/libnice/NiceAgent.html#NiceAgent--ice-tcp

3. libnice新版也支持tcp 心跳检测

libnice 0.1.8以后支持keepalive-conncheck
gboolean keepalive = TRUE;
g_object_set(G_OBJECT(agent), "keepalive-conncheck", keepalive, NULL);

就是超时时间有点长。

最大超时时间在 time.h中
total_timeout = initial_timeout * (2^(max_retransmissions + 1) - 1);
20s-80s左右超时NICE_COMPONENT_STATE_FAILED

时间: 2024-10-27 17:07:16

[webrtc] 强制使用tcp传输的相关文章

TCP传输协议

1.TCP中一些名词解释 (1)MSS(maximum segment size) TCP的最大报文段大小,在TCP报文段中有一个16位的部分用于放置该值,因此最大为65535,可以利用setsockopt() 和getsockopt设置和获取TCP_MAXSEG来影响MSS: (2)MSL(maximum segment lifetime) IP报文段能在网络中存在的最长时间,这个是系统级的参数,没有接口修改,windows上可以通过注册表修改,通常为2分钟,最低为30秒,linux上面没法修

TCP传输协议使用

TCP传输协议,也称之为套接字连接,比较安全,三次握手!,必须确保对方计算机存在,才能连接,而且是长时间连接. 缺点是传输速度有点慢. 你用 socket 去连接 ServiceSocaket 服务器端,ServiceSocaket 会创建一个,Sockets 然后你的Socket ,连接服务器端创建的Socket 最后你的Socket 和 服务器端的 Socket 都会创建一个 OutputStrea 和InputStream 流用来传输数据. 如下图: ServerSocket : 服务端,

实验五 TCP传输及加解密

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计                         班级:1353            姓名:陈巧然      学号:20135310 成绩:             指导教师:娄佳鹏              实验日期:2015.6.9 实验密级:         预习程度:             实验时间:15:20-18:00 仪器组次:10          必修/选修:            

TCP传输工作原理

引言 在TCP/IP体系结构中,IP协议只管将数据包尽力传送到目的主机,无论数据传输正确与否,它都不做验证,不发确认,也不保证数据包的顺序,因而不具有可靠性.这一问题要由传输层TCP协议来解决,TCP协议为Internet提供了可靠的无差错的通信服务. 一.OSI参考模型和TCP/IP参考模型 OSI模型(open system interconnection reference model)是基于国际标准化组织(ISO)的建议而发展起来的,它分为如图1所示的七层. TCP/IP最初是为ARPA

JAVA之旅(三十三)——TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录

JAVA之旅(三十三)--TCP传输,互相(伤害)传输,复制文件,上传图片,多并发上传,多并发登录 我们继续网络编程 一.TCP 说完UDP,我们就来说下我们应该重点掌握的TCP了 TCP传输 Socket和ServiceSocket 建立客户端和服务端 建立连接后,通过Socket中的IO流进行数据的传输 关闭Socket 同样的,我们的客户端和服务端都是两个独立的应用 我们通过查阅API文档发现,该对象在建立的时候,就可以去连接指定主机,因为tcp是面向连接的,所以在建立socket服务时,

Java实验五报告——TCP传输及加解密

一.实验内容 1.运行教材上TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代码,一人加密后通过TCP发送: 注:加密使用AES或者DES/AES或者DES加密密钥key并发送,使用服务器的公钥加密/公钥算法使用RSA或DH/检验发送信息的完整性使用MD5或者SHA3: 4.完成Blog. 二.实验步骤 1.综述 本次实验的实验内容较少,但是准备工作非常多:在此次实验中,本小组仍然采用“编学习,边实验”的方法,虽然过程较曲折,但最

golang中解决tcp传输中的粘包问题

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> golang中解决tcp传输中的粘包问题 - Programmer小卫 - 博客频道 - CSDN.NET Programmer小卫 故不积跬步,无以至千里.不积小流,无以成江海. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书

在qt中用tcp传输xml消息

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:Qt5 3.1.2 说明: 在tcp上传输xml消息. 协议格式如下: 2字节标识(0xc55c,网络序)+2字节预留 +4字节报文内容长度(网络序) + 4字节命令字(网络序)+报文内容 部分协议: 命令字:请求值班信息:GET_DUTY_INFO请求报文: <?xml version="1.0" encoding="UTF-8"

TCP传输中序号与确认序号的交互

本实验通过SSH远程登录服务器,然后使用Wireshark抓包分析.开头的三次握手已经省略.关于序号的交互过程,需要记住一点:TCP首部中的确认序号表示已成功收到字节,但还不包含确认序号所指的字节,希望下一次能收到确认序号所指的字节. 当在远程登录软件上键入命令时,客户端便开始了数据的发送,TCP头如下: 初始化序列号ISN = 1,这个序列号是客户端对发送数据的一个标记,以1作为起始值.根据SSH包长度计算下一次将会发送的起始序号为65.确认序号为1表示我希望下次收到起始序号为1的TCP包.