1.学习的线索和姿势

这是[手把手一起学live555]的第2篇(按这个序号看)。
live555工程在我的gitee下(doc下有思维导图、drawio图):
https://gitee.com/lure_ai/live555/tree/master

1.学习姿势

我强烈建议结合对象图、思维导图和代码看。
就是说在我的笔记里有思维导图和对象图,我没有提醒你说这两个结合一块看,但是你自己应该能感受到,我的思维导图和对象图是互相对照着再结合代码画出来的,也就是说它们都源自代码,都是代码的映射——一个是思维流程文字映射,一个是图形化映射——所以可以互相参看印证来理解代码(再回归到代码)。

2.学习线索

代码走读的线索,是0到1丝滑般切换的关键,是阅读代码的灵魂

你看网上的笔记讲解要么直接讲类关系,要么直接demo顺序代码走读,没有一个线索在那里,真是一言难尽。

那么live555是流媒体,流媒体包含网络编程、rtsp协议、rtp协议等。

因此,根据流媒体的特点,我找到3个阶段共3条线索,如下:

第一个阶段:网络编程线索阶段。这个是水源,或者说水井。
第二个阶段:rtsp协议线索阶段。有水了,现在是用水。先是过rtsp协议,按照option/describe/setup/play/teardown等流程为线索,再结合wireshark工具讲解。
第三个阶段:rtp协议线索阶段。这个时候要分析rtp头、载荷结构、载荷数据、rtp打包等,这些为线索,结合wireshark工具讲解。

这3条线索关系是由下而上的线索,一脉相承,就像人有小孩、青年、中年、老年的阶段,不同阶段对应不同的线索,并不冲突——看你处于哪个阶段了——假设你是live555专家,那你所处的阶段看我写的就觉得就这么简单。

第一个阶段:网络编程线索阶段

我提倡以业务为线索,现在阅读live555流媒体开源项目以网络编程为线索并不冲突,因为流媒体的骨架、发动机是网络编程——流媒体基于网络数据的接受与发送。所以网络编程也可以单独作为一个业务来观察与优化。

现在想想,live555是TCP非阻塞网络编程,所以它肯定逃不脱TCP非阻塞网络编程的模式。
TCP非阻塞服务端网络编程的一般流程
socket创建、
bind、
listen、
select、
accept、
select、
recvfrom/send、
close

TCP非阻塞客户端网络编程的一般流程
socket创建、
connect、
select、
connect、
select、
recvfrom/send、
close

这是边写边想整理出来的3条线索,这为之后的代码阅读、笔记撰写奠定了基调和方向。这还挺靠谱的,一步一步走,这就把握了流媒体的整个灵魂。

启发

第1点,建议凡是以网络编程为基的业务(不局限于流媒体)都可以以网络编程为起始点为线索来开始阅读业务。

第2点,根据领域知识特点,发现其特有的线索。以流媒体为例是网络编程、rtsp、rtp等得集合体,那么这自然,我就想到从下而上,探索初3个阶段对应3条线索。——你说的话和思考的都是一当时的时空为基础的,脱离了当时的时空条件,你说的话和思考都会变。这就是我的阶段论。

你可能感兴趣的:(手把手一起学live555,学习,网络协议,网络,开源)