:分析srs从启动开始的main入口开始。分析rtmp监听端口,然后到接收到新rtmp连接的过程分析。

目录

  • 一、流程图
  • 二、代码分析
    • 1、srs_main_server.cpp:main()
    • 2、srs_main_server.cpp:do_main()
    • 3、srs_main_server.cpp:run()
    • 4、srs_main_server.cpp:run_master()
    • 5、srs_app_server.cpp: SrsServer::initialize_st()
    • 6、srs_service_st.cpp: srs_st_init()
    • 7、srs_app_server.cpp: SrsServer::listen()
    • 8、srs_app_server.cpp: SrsServer::listen_rtmp()
    • 9、srs_app_server.cpp: SrsBufferListener::listen()
    • 10、srs_app_listener.cpp: SrsTcpListener::listen()
    • 11、srs_service_st.cpp: srs_tcp_listen()
    • 12、srs_service_st.cpp: do_srs_tcp_listen()
    • 13、srs_app_st.cpp: SrsSTCoroutine::start()
    • 14、srs_app_st.cpp: SrsSTCoroutine::pfn()
    • 15、srs_app_st.cpp: SrsSTCoroutine::cycle()
    • 16、srs_app_listener.cpp: SrsTcpListener::cycle()
    • 17、srs_app_server.cpp: SrsBufferListener::on_tcp_client()
    • 18、srs_app_server.cpp: SrsServer::accept_client()
    • 19、srs_app_server.cpp: SrsServer::fd2conn()
    • 20、srs_app_conn.cpp: SrsConnection::start()
    • 21、srs_app_conn.cpp: SrsConnection::cycle()
    • 22、srs_app_rtmp_conn.cpp: SrsRtmpConn::do_cycle()

一、流程图

二、代码分析

1、srs_main_server.cpp:main()

2、srs_main_server.cpp:do_main()


3、srs_main_server.cpp:run()


4、srs_main_server.cpp:run_master()

5、srs_app_server.cpp: SrsServer::initialize_st()

6、srs_service_st.cpp: srs_st_init()

7、srs_app_server.cpp: SrsServer::listen()

8、srs_app_server.cpp: SrsServer::listen_rtmp()

9、srs_app_server.cpp: SrsBufferListener::listen()

10、srs_app_listener.cpp: SrsTcpListener::listen()

11、srs_service_st.cpp: srs_tcp_listen()

12、srs_service_st.cpp: do_srs_tcp_listen()

13、srs_app_st.cpp: SrsSTCoroutine::start()

14、srs_app_st.cpp: SrsSTCoroutine::pfn()

15、srs_app_st.cpp: SrsSTCoroutine::cycle()

16、srs_app_listener.cpp: SrsTcpListener::cycle()

17、srs_app_server.cpp: SrsBufferListener::on_tcp_client()

18、srs_app_server.cpp: SrsServer::accept_client()

19、srs_app_server.cpp: SrsServer::fd2conn()


20、srs_app_conn.cpp: SrsConnection::start()

21、srs_app_conn.cpp: SrsConnection::cycle()

22、srs_app_rtmp_conn.cpp: SrsRtmpConn::do_cycle()


srs rtmp从监听到接收到新连接的过程分析相关推荐

  1. oracle 监听 无法连接,oracle监听hang,无法建立新连接TNS-12540

    TNS-12518: TNS:listener could not hand off client connection TNS-12540: TNS:internal limit restricti ...

  2. [vue] 分别说说vue能监听到数组或对象变化的场景,还有哪些场景是监听不到的?无法监听时有什么解决方案?

    [vue] 分别说说vue能监听到数组或对象变化的场景,还有哪些场景是监听不到的?无法监听时有什么解决方案? 无法监听时的方案: 数组:改变数组的值:this.$set() 改变数组长度:arr.sp ...

  3. 安卓短信功能全解:调用系统短信功能发送短信、彩信,使用SmsManager发送短信,并监听发送短信的投递情况,使用广播接收器监听接收的短信。

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓短信功能全解:调用系统短信功能发送短信.彩信,使用SmsManager发送短信,并监听发送短信的投递情况,使用广播接收器监听接收的短信. 首先需要 ...

  4. oracle实例没有连到监听上6,oracle LISTENER未监听到oracle实例问题解决

    oracle LISTENER未监听到oracle实例问题解决 LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = ...

  5. python接收邮件g_Python接收Gmail新邮件并发送到gtalk的方法

    本文实例讲述了Python接收Gmail新邮件并发送到gtalk的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 - ...

  6. [vue] vue能监听到数组变化的方法有哪些?为什么这些方法能监听到呢?

    [vue] vue能监听到数组变化的方法有哪些?为什么这些方法能监听到呢? 你说的是vue内部的源码对Array数据的中转代理嘛 好像对push, shift等通用方法都做了代理吧! 因为它对中转的数 ...

  7. python接收最新邮件_Python接收Gmail新邮件并发送到gtalk的方法

    本文实例讲述了Python接收Gmail新邮件并发送到gtalk的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 - ...

  8. IMAP协议定时监听接收邮件(QQ邮箱、网易邮箱都可)

    前面已介绍过SMTP协议发论文:qq邮箱,网易邮箱,smtp邮箱发邮件 本文将继续介绍如何用IMAP协议收邮件. IMAP协议:即Internet Message Access Protocol(互联 ...

  9. oracle数据库:ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接

    项目场景: 当我们使用sqlplus输入shutdown命令然后重启动的时候,或者在新环境就会出现下列错误 问题描述: ERROR: ORA-12528: TNS: 监听程序: 所有适用例程都无法建立 ...

最新文章

  1. python元组用法详解(定义、下表查找、index()、count()、len())
  2. 【Java集合框架】ArrayList类方法简明解析(举例说明)
  3. 前端面试题目及答案(欢迎拍砖)
  4. 单片机片外RAM,串行的
  5. DFT实训教程笔记1(bibili版本)- introduction to DFT DFT Architecture
  6. IBM服务器系统盘更换后检查,IBM服务器更换rootvg故障磁盘操作指南
  7. 推荐10个技术圈优质的公众号大号
  8. C#递归、动态规划计算斐波那契数列
  9. [css][移动设备]禁止横竖屏时内容自动调整
  10. SQLite学习总结(1)——SQLite简介及快速入门
  11. 博客园项目开发中的难点
  12. 和好几天又开战!AMD显卡老大跳槽,要帮英特尔进军GPU
  13. java web filter 入口_springboot 通过@WebFilter(urlPatterns )配置Filter过滤路径
  14. Bezier曲线及其de casteljau算法 matlab实现
  15. ping 命令的用法大全(图文详解)
  16. 【深度完美精简版 5.10】 Deepin-LiteXP-5.10
  17. c语言 怎么对百位数求余量,数据结构(C语言版)
  18. Docker实现原理之 - OverlayFS实现原理
  19. win7旗舰版安装telnet,报错:打开程序包 Telnet Client 的更新 TelnetClient 失败。状态为: 0x80073712。解决方案
  20. C语言中在常数后面加U、L、F的功能(转)

热门文章

  1. fatal error C1083: 无法打开预编译头文件:“Debug\a.pch”:No such file or directory
  2. 封装 axios 请求
  3. SCP 报错 not a regular file
  4. 利用爬虫模拟网页微信wechat
  5. SD/MMC相关寄存器的介绍
  6. 面向对象设计与构造第一次总结作业
  7. NOIP2017年11月9日赛前模拟
  8. 使用 SqlDataSource 插入、更新和删除数据49
  9. 孩子在华艺舞校的画画投稿-天女之梦
  10. BoooLee pyretoolkit -- 一个基于python re模块的在线正则表达式测试工具