连接建立整体过程:
- 解析listen配置-ngx_rtmp_core_listen
- 根据ip地址端口创建ngx_listening_t监听套接字-ngx_rtmp_optimize_servers
- 创建socket,打开监听–ngx_open_listening_sockets
- accpet监听事件初始化–ngx_event_process_init
- rtmp连接创建 ngx_rtmp_init_connection
- rtmp三次握手
监听端口相关数据结构
listen监听端口相关的数据结构主要有以下数据结构,简单来说,nginx配置文件中可以有多个listen端口,每个端口对应有多个ip地址。
- ngx_rtmp_conf_addr_t
- ngx_rtmp_conf_port_t
- ngx_rtmp_listen_t
- ngx_rtmp_core_main_conf_t
服务器很多都是有多网卡的,一个端口也可以对应有多个地址,监听端口的时候可以配置监听某个指定地址的端口,也可以只配置端口那么就是所有ip地址都监听。
ngx_rtmp_conf_addr_t是用来表示监听的某个地址信息。
typedef struct {
struct sockaddr *sockaddr;
socklen_t