自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 mediasoup源码阅读-channel的构造

mediasoup上层是nodejs server,调起的一个底层c++进程worker,下面看一下worker创建和nodejs通信的channel的过程: 1.main.cpp 一进入main函数,开始就先进行初始化LibUV,然后初始化channel以及payloadChannel 2.进入Channel::UnixStreamSocket() 在构造函数中分别又构造了consumerSocket以及producerSocket 3.进入consumerSocket构造函数 最后实际初始化的是h

2021-01-22 16:42:16 314

原创 webrtc建立连接过程

clientA

2021-01-18 17:10:31 918 1

原创 webrtc协议梳理

ICE 交互式连接设施Interactive Connectivity Establishment (ICE) 是一个允许你的浏览器和对端浏览器建立连接的协议框架。 但是在实际网络中,有很多原因导致A端无法连接B端,比如:防火墙阻拦,NAT等等。ICE会通过使用一下几种技术来完成连接。 STUN NAT的会话穿越功能Session Traversal Utilities for NAT (STUN) (缩略语的最后一个字母是NAT的首字母)是一个允许位于NAT后的客户端找出自己的公网地址,判断出路由器阻止直

2021-01-13 16:55:17 241

原创 webrtc学习

什么是webrtc ​ WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输,支持网页浏览器进行实时语音对话或视频对话。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。 webrtc核心组件 音视

2021-01-13 14:46:48 157

原创 TCP的半关闭

半关闭是什么 TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。这就是所谓 的半关闭。 什么时候处于半关闭 如图所示当四次挥手处于被动关闭的一方在收到主动关闭方的FIN时,进入CLOSE_WAIT状态,主动方收到对方的同意ACK后就进入了半关闭状态。此时,左方还可以收到右方所发送过来的数据。当右方已经没有数据可发时向对方发送FIN,等对方回复确认ACK后,这个TCP的链接便彻底...

2019-04-07 17:42:51 1379

原创 浅谈malloc/free和new/delete区别

new和delete的用法 创建一个对应类型的对象 int *p=new int; //创建一个int类型的对象,不做初始化 int *p=new int(); //创建一个int类型的对象并初始化为0 int *p=new int(10); //创建一个int类型的对象并初始化为()中指定值 释放这一个对象 delete p; //释放指针p所指向的对象 p=N...

2019-03-24 16:49:54 115

原创 I/O复用select

I/O复用的作用 I/O复用使得程序能同时监听多个文件描述符,一旦用户所关心的文件描述符上有事件发生,则内核就会通知用户去处理,如果不使用I/O复用,则进程需要依次对用户添加的文件描述符进行处理,但可能有些文件描述符并没有事件发生,则会造成阻塞,使得程序性能的降低。 select系统调用 select系统调用的用途是:在一段制定时间内,监听用户感兴趣的文件描述上的可读、可写和异常等事件。 sele...

2019-03-20 22:41:22 110

原创 编译链接

编译与链接的流程 1.预编译:主要处理那些源代码文件中的以"#"开始的预编译指令。主要规则如下: 1)将所有的"#define"删除,并展开所有宏定义。 2)处理所有条件预处理指令。 3)处理头文件,将被包含的文件插入到预处理指令的位置。注意,这里是递归进行的,因为被包含的文件可能还包含其他文件。 4)删除所有注释。(实际是用空格替换) 5)添加行号和文件标识。例如:#2"hello.c"2,以便...

2019-02-01 16:57:22 90

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除