`
张立军
  • 浏览: 35397 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

libevent可以快速实现一个http服务器evhttp

阅读更多

从张宴的http://blog.s135.com/httpsqs/

看到了libevent可以快速实现一个http服务器。后来又从搜搜evhttp的例子。拿ab测了测,速度还不错。比Nginx模块稍慢。

 

 

#include <stdlib.h>

#include <stdio.h>

#include <time.h>

 

#include <err.h>

#include <event.h>

#include <evhttp.h>

 

void now_handler(struct evhttp_request *req, void *arg)

{

        struct evbuffer *buf;

        buf = evbuffer_new();

 

        if (buf == NULL)

            err(1, "failed to create response buffer");

 

        evbuffer_add_printf(buf, "zlj");

        evhttp_send_reply(req, HTTP_OK, "OK", buf);

}

 

int main(int argc, char **argv)

{

    struct evhttp *httpd;

 

    event_init();

    httpd = evhttp_start("0.0.0.0", 6006);

    if ( httpd == NULL )

    {

        fprintf(stderr, "Start server error: %m\n");

exit(1);

    }

 

    /* Set a callback for requests to "/specific". */

    /* evhttp_set_cb(httpd, "/specific", another_handler, NULL); */

 

    /* Set a callback for all other requests. */

    evhttp_set_gencb(httpd, now_handler, NULL);

 

    event_dispatch();

 

    /* Not reached in this code as it is now. */

    evhttp_free(httpd);

 

    return 0;

}


0
0
分享到:
评论

相关推荐

    cpp-Libevhtpevhttp是一个libevent的HTTPAPI一个更灵活的替代品

    Libevhtp,又名evhttp,是基于libevent库的一个高效、灵活的HTTP服务器API。这个库的设计目的是为了提供比libevent自带的HTTP接口更强大的功能和更易用的API,适合开发需要处理HTTP协议的C/C++应用。本文将深入探讨...

    libevent 中文文档.doc

    5. evhttp: 是一个简单的HTTP客户端/服务器实现,使开发HTTP服务变得更加容易。 6. evdns: 为DNS查询提供简单的客户端/服务器实现,简化了网络应用中的域名解析。 7. evrpc: 提供了简单的RPC(远程过程调用)实现...

    libevent2手册_libevent2_

    此外,libevent有一个活跃的社区,开发者可以在其中获取帮助、报告问题和分享经验。 总之,libevent2是一个强大且灵活的事件通知库,对于编写高性能的网络应用和服务来说,是一个不可或缺的工具。通过深入理解和...

    libevent中文参考手册

    5. **evhttp**:一个简单的HTTP客户端/服务器实现,用于快速构建基于HTTP的应用。 6. **evdns**:提供了基本的DNS查询功能,便于开发者在程序中集成DNS解析。 7. **evrpc**:一个简易的远程过程调用(RPC)框架,...

    libevent函数手册

    通过使用`bufferevent`和相关的HTTP解析函数,可以轻松实现一个高性能的Web服务器。 ```c #include &lt;event2/http.h&gt; ... struct evhttp *http = evhttp_new(base); evhttp_set_gencb(http, http_request_cb, NULL);...

    libevent-1.0b源码(资料中转)

    libevent是一个高效、可扩展的事件通知库,它使得开发者能够轻松处理大量并发网络连接。在这个源码包“libevent-1.0b”中,我们可以深入研究这个库的核心机制和其在多线程环境下的应用。本文将详细介绍libevent的...

    libevent 参考手册

    - **evhttp**:一个轻量级的 HTTP 客户端/服务器实现,利用 libevent 的非阻塞特性提供高效的 HTTP 处理能力。 - **evdns**:用于实现 DNS 查询的客户端/服务器组件。 - **evrpc**:一个简单的远程过程调用 (RPC) ...

    后端网络框架学习必备:libevent源码剖析

    libevent是一个不可或缺的工具,尤其对于那些致力于构建高效、可扩展后端服务的开发者来说。它是一个轻量级的事件库,采用C语言编写,因此具有高度的移植性和兼容性,能够在多个操作系统平台上运行,包括Unix、Linux...

    LINXU libevent库

    - **HTTP服务器**:通过evhttp模块,可以轻松创建一个简单的HTTP服务器。 - **信号处理**:注册信号事件,响应系统信号。 - **定时器**:设置定时事件,定期执行任务。 - **DNS解析**:使用libevent的内置DNS支持...

    LibEvent2017 VS2005编译通过

    LibEvent是一个广泛使用的开源库,它主要用于处理事件驱动的网络编程,尤其是在服务器端应用中。其核心功能是允许程序员定义一组事件,并在这些事件发生时执行相应的回调函数。在本文中,我们将深入探讨如何在Visual...

    libevent库的使用--定时器的使用实例

    在`main`函数中,首先检查命令行参数以决定要加载的文件,然后初始化libevent库,调用`load_file`启动定时器,接着创建一个HTTP服务器`http_server`,监听指定的IP地址`http_addr`和端口`http_port`。通过`evhttp_...

    libevent-Demo

    libevent是一个开源的事件通知库,被广泛应用于高性能服务器开发中,尤其在处理大量并发连接时表现出色。它提供了一种统一的方式来处理各种事件源,如网络套接字、文件描述符、定时器等。本篇文章将围绕夏曹俊老师的...

    简易HttpServer

    创建一个简单的Java HttpServer,我们需要导入`com.sun.net.httpserver.HttpServer`类,并通过以下步骤实现: 1. 初始化HttpServer实例:`HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);...

    donkey_server

    基于libevent 2.0 bufferevent写的tcp网络服务器框架,参考了evhttp对bufferevent的封装,抽象出连接类,使得编写异步高性能的tcp服务器变得更加容易。 目前该框架在优势科技来电通后台服务器中应用,高效稳定。

    TCP网络服务器框架dk-server.zip

    基于libevent 2.0 bufferevent写的tcp网络服务器框架,参考了evhttp对bufferevent的封装,抽象出连接类,使得编写异步高性能的tcp服务器变得更加容易。 标签:dkserver

    学习C语言基本思路与参考书籍

    例如,标准库中的printf()函数用于输出文本,而Windows API中的CreateWindowEx()函数用于创建图形用户界面,OpenCV库的GaussianBlur()函数用于图像处理,libevent库的evhttp_new()函数则用于构建HTTP服务器。...

Global site tag (gtag.js) - Google Analytics