6.live555mediaserver-[select-recv/send]

news/2024/7/5 6:44:46

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

学习demo
live555mediaserver.cpp

学习线索和姿势
1.学习的线索和姿势

网络编程
流媒体的发动机 是网络编程(socket编程)。[网络编程学习]-0.学习路线。

绘图规则
本文的对象图和思维导图遵守的规则详见:
2.绘图规则

本节内容和目标
(1)TCP非阻塞服务端网络编程流程accept节点(非阻塞服务网络编程流程:socket创建、bind、listen、select、accept、select、recv/send
(2)思维导图绘制
(3)对象图绘制

正式开始
5.live555mediaserver-accept已经追踪到了accept流程,本节追踪select、recv/send流程。

还记得上一节讲的目前链表中有3个了——一个是链表头结点(哨兵-不保存任何数据),一个是服务端监听socket,一个是客户端已链接socket。上一节的链表图搬来如下:链表队列
因此BasicTaskScheduler0::doEventLoop是个while循环,它循环调用BasicTaskScheduler::SingleStep,select就在这里面,这次就同时监听服务端监听socket、客户端已链接socket了。咱们从这起手!

我依然以之前VLC拉流为例,接下来VLC会下发rtsp协议,完成后还会发送rtp包数据。——这些VLC客户端发送的数据都发送到服务端的已连接客户端socket了,服务端自然select到了,最后匹配到该socket的链表队员,执行对应方法。思维导图如下:
思维导图
如上图所示,客户端与服务端之间传输的就是rtsp协议、rtp包等了——这些我们先不谈,它们整体传输流程就是重复的select已链接客户端socket然后执行如下方法:
GenericMediaServer::ClientConnection::incomingRequestHandler(void* instance, int /mask/)

这个方法里是处理这些rtsp协议、rtp数据的地方,我现在只关注网络编程线索,它是通过recvfrom取出客户端发送过来的数据的,并通过send传回数据给客户端的。

那么整个传输过程就是重复的select-recv/send。

那么到此,网络编程线索告一段落。——第1阶段、第1条线索暂时讲解到这里,接下来就要进入第2阶段第2条线索——rtsp协议线索——了,在这之前有必要总结下,所以下一节是总结。


http://lihuaxi.xjx100.cn/news/88150.html

相关文章

FSM mealy型状态机实现

FSM mealy型状态机实现FSM 状态机的概念FSM 状态FSM 状态机FSM 输入信号处理&状态切换FSM 状态的行为FSM(finite-state machine) 有限状态机。mealy型状态机:输入不仅与当前状态有关,还与输入有关; FSM 状态机的概念 有限状态机(finite…

CISP-PTE考前练习-SQL注入

文章目录题目一:联合查询注入题目二:二次注入题目三:文章发布系统题目四:模拟实战练习摘抄题目一:联合查询注入 第一步 常规的 访问页面发现参数id http://192.168.253.207/PTE/1.Sql_Injection/第二步 尝试闭合 id…

安科瑞IoT能源管理系统解决方案在马来西亚某工厂的应用

安科瑞陈沁雨:1-8-7-0-2-1-1-2-8-7-3 1.应用场景 客户需要收集基本能耗数据并上传到管理系统,以便使用PC实现实时和远程数据监控。 2.技术选择 2.1三相监测电路的额定电压为415Vac L-L,而额定电流低于80A AC,因此计量装置的选…

第26章 物联网软件系统测试

目录 一、主要内容 二、物联网概述 1、物联网定义 2、物联网的三个典型特征 3、物联网应用的三项关键技术 4、物联网的安全架构 三、物联网安全架构的设备层 1、定义 2、保护措施 3、原则 四、物联网安全架构的通信层 1、定义 2、保护措施 3、原则 五、物联网安全架构的云平台层…

python 碰到问题

好的 python 文件具有结构性 一个好的python文件具有结构性,即文件中只含有class, if __name__ "__main__". vscode 中的矩形选择问题 mac中使用快捷键shiftoption鼠标选中 mac 中快捷键 mac 打开网页,轻触鼠标两下(但是不按下…

后端发送HTTP请求

后端发送HTTP请求 1 原始方式 背景: get:获取微信的accessToken post:设置微信公众号的自定义菜单 1.1 get方式 //get方式发起请求 public String get(String url){try{URL urlObj new URL(url);//开连接URLConnection connection urlObj…

C# 多线程九 任务Task的简单理解与运用三

目录 方法: ConfigureAwait(Boolean) ContinueWith Delay Dispose() Dispose(Boolean) 说明: FromCanceled(CancellationToken) FromCanceled(CancellationToken) FromResult(TResult) FromException(Exception) FromException(Except…

神经网络识别仿真实验,神经网络算法实验报告

1、关于GAN生成式对抗网络中判别器的输出的问题 ... 摘要 生成式对抗网络GAN(Generative adversarial networks)目前已经成为人工智能学界一个热门的研究方向.GAN的基本思想源自博弈论的二人零和博弈,由一个生成器和一个判别器构成&#xff…