Mongoose源码分析之--简单的服务器搭建(C语言)

由于在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,
                      struct mg_connection *conn) {
  if (event == MG_NEW_REQUEST) {
       //response for http request.
   }
}

int main(void) {
  struct mg_context *ctx;
  const char *options[] = {"listening_ports", "8080", NULL};

  ctx = mg_start(&callback, NULL, options);
  getchar();  // Wait until user hits "enter"
  mg_stop(ctx);

  return 0;
}

以上为搭建一个简单的本地服务器,端口为8080,运行起来之后在本机的浏览器中访问http://127.0.0.1:8080/地址则可以访问到本机的根目录。如果需要自定义服务器对请求的响应,那么可以在代码中回调函数callback中自行实现。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值