由于在IOS终端设备上播放实时的TS流,要使用MPMoviePlayerController控件,必须采用Http请求的形式去请求数据,而TS流的来源是通过HTTP请求拿到的,需要再把这个拿到的TS流发送给IOS播放器,所以试图自己搭建一个HTTP服务器,为此学习了Mongoose的源码,这是一个非常轻便,易用,且性能稳定的一套Web服务器源码,总代码不到五千行,在我看来是学习HTTP服务器搭建的一个好的例子。
根据我对Mongoose源码的查看和分析,建立一个http服务器的流程是:
开启一个master线程:监听线程->监听所有的套接字读状态是否发生变化(判断是否有套接字请求连接),将请求连接的套接字加入到全局的queue[20]中去。如果队列已满,则等待。
同时开启N个worker线程:不断从queue中拿出头套接字进行连接处理,如果队列为空,则等待。
最简单的一个HTTP服务器搭建C语言代码如下。
#include <stdio.h>
#include <string.h>
#include "mongoose.h"
static void *callback(enum mg_event event