- 博客(8)
- 收藏
- 关注
原创 mediasoup源码阅读-channel的构造
mediasoup上层是nodejs server,调起的一个底层c++进程worker,下面看一下worker创建和nodejs通信的channel的过程:1.main.cpp一进入main函数,开始就先进行初始化LibUV,然后初始化channel以及payloadChannel2.进入Channel::UnixStreamSocket()在构造函数中分别又构造了consumerSocket以及producerSocket3.进入consumerSocket构造函数最后实际初始化的是h
2021-01-22 16:42:16
353
原创 webrtc协议梳理
ICE交互式连接设施Interactive Connectivity Establishment (ICE) 是一个允许你的浏览器和对端浏览器建立连接的协议框架。但是在实际网络中,有很多原因导致A端无法连接B端,比如:防火墙阻拦,NAT等等。ICE会通过使用一下几种技术来完成连接。STUNNAT的会话穿越功能Session Traversal Utilities for NAT (STUN) (缩略语的最后一个字母是NAT的首字母)是一个允许位于NAT后的客户端找出自己的公网地址,判断出路由器阻止直
2021-01-13 16:55:17
288
原创 webrtc学习
什么是webrtc WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输,支持网页浏览器进行实时语音对话或视频对话。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。webrtc核心组件音视
2021-01-13 14:46:48
213
原创 TCP的半关闭
半关闭是什么TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。这就是所谓的半关闭。什么时候处于半关闭如图所示当四次挥手处于被动关闭的一方在收到主动关闭方的FIN时,进入CLOSE_WAIT状态,主动方收到对方的同意ACK后就进入了半关闭状态。此时,左方还可以收到右方所发送过来的数据。当右方已经没有数据可发时向对方发送FIN,等对方回复确认ACK后,这个TCP的链接便彻底...
2019-04-07 17:42:51
1511
原创 浅谈malloc/free和new/delete区别
new和delete的用法创建一个对应类型的对象int *p=new int; //创建一个int类型的对象,不做初始化int *p=new int(); //创建一个int类型的对象并初始化为0int *p=new int(10); //创建一个int类型的对象并初始化为()中指定值释放这一个对象delete p; //释放指针p所指向的对象p=N...
2019-03-24 16:49:54
163
原创 I/O复用select
I/O复用的作用I/O复用使得程序能同时监听多个文件描述符,一旦用户所关心的文件描述符上有事件发生,则内核就会通知用户去处理,如果不使用I/O复用,则进程需要依次对用户添加的文件描述符进行处理,但可能有些文件描述符并没有事件发生,则会造成阻塞,使得程序性能的降低。select系统调用select系统调用的用途是:在一段制定时间内,监听用户感兴趣的文件描述上的可读、可写和异常等事件。sele...
2019-03-20 22:41:22
156
原创 编译链接
编译与链接的流程1.预编译:主要处理那些源代码文件中的以"#"开始的预编译指令。主要规则如下:1)将所有的"#define"删除,并展开所有宏定义。2)处理所有条件预处理指令。3)处理头文件,将被包含的文件插入到预处理指令的位置。注意,这里是递归进行的,因为被包含的文件可能还包含其他文件。4)删除所有注释。(实际是用空格替换)5)添加行号和文件标识。例如:#2"hello.c"2,以便...
2019-02-01 16:57:22
108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人