Archive

For the libevent category

libevent学习(-) 利用内置的An embedded libevent-based HTTP server 实现一个简单的http server

1 Comment
#include 
#include 
#include 
#include 
void httpd_handler(struct evhttp_request *req, void *arg){
  struct evbuffer *buf = evbuffer_new();
  evhttp_add_header(req->output_headers, "Server", "mmxcq-server");
  evhttp_add_header(req->output_headers, "Content-Type", "text/html;charset=utf-8");
  evhttp_add_header(req->output_headers, "Connection", "keep-alive");
  evhttp_add_header(req->output_headers, "Cache-Control", "no-cache");
  evbuffer_add_printf(buf,"%s","mmxcq的博客 http://blog.517car.com");
  evhttp_send_reply(req, HTTP_OK, "OK", buf);
  evbuffer_free(buf);
}
int main(int argc,char * argv[]){
  pid_t pid;
  pid = fork();
  if (pid < 0) {
    exit(EXIT_FAILURE);
  }else if (pid > 0) {
    exit(EXIT_SUCCESS);
  }
  event_init();
  struct evhttp *httpd;
  httpd=evhttp_start  ("127.0.0.1", 9999);
  if (httpd == NULL) {
      fprintf(stderr, "Error: Unable to listen\n\n");
      exit(1);
  }
  evhttp_set_timeout(httpd,3);//Set the timeout for an HTTP request.
  evhttp_set_gencb(httpd, httpd_handler, NULL);
  event_dispatch();
  evhttp_free(httpd);
  return 0;
}

然后在gcc下编译通过

$ gcc main.c -o main -levent
./main