从张宴的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;
}
分享到:
相关推荐
Libevhtp,又名evhttp,是基于libevent库的一个高效、灵活的HTTP服务器API。这个库的设计目的是为了提供比libevent自带的HTTP接口更强大的功能和更易用的API,适合开发需要处理HTTP协议的C/C++应用。本文将深入探讨...
5. evhttp: 是一个简单的HTTP客户端/服务器实现,使开发HTTP服务变得更加容易。 6. evdns: 为DNS查询提供简单的客户端/服务器实现,简化了网络应用中的域名解析。 7. evrpc: 提供了简单的RPC(远程过程调用)实现...
此外,libevent有一个活跃的社区,开发者可以在其中获取帮助、报告问题和分享经验。 总之,libevent2是一个强大且灵活的事件通知库,对于编写高性能的网络应用和服务来说,是一个不可或缺的工具。通过深入理解和...
5. **evhttp**:一个简单的HTTP客户端/服务器实现,用于快速构建基于HTTP的应用。 6. **evdns**:提供了基本的DNS查询功能,便于开发者在程序中集成DNS解析。 7. **evrpc**:一个简易的远程过程调用(RPC)框架,...
通过使用`bufferevent`和相关的HTTP解析函数,可以轻松实现一个高性能的Web服务器。 ```c #include <event2/http.h> ... struct evhttp *http = evhttp_new(base); evhttp_set_gencb(http, http_request_cb, NULL);...
libevent是一个高效、可扩展的事件通知库,它使得开发者能够轻松处理大量并发网络连接。在这个源码包“libevent-1.0b”中,我们可以深入研究这个库的核心机制和其在多线程环境下的应用。本文将详细介绍libevent的...
- **evhttp**:一个轻量级的 HTTP 客户端/服务器实现,利用 libevent 的非阻塞特性提供高效的 HTTP 处理能力。 - **evdns**:用于实现 DNS 查询的客户端/服务器组件。 - **evrpc**:一个简单的远程过程调用 (RPC) ...
libevent是一个不可或缺的工具,尤其对于那些致力于构建高效、可扩展后端服务的开发者来说。它是一个轻量级的事件库,采用C语言编写,因此具有高度的移植性和兼容性,能够在多个操作系统平台上运行,包括Unix、Linux...
- **HTTP服务器**:通过evhttp模块,可以轻松创建一个简单的HTTP服务器。 - **信号处理**:注册信号事件,响应系统信号。 - **定时器**:设置定时事件,定期执行任务。 - **DNS解析**:使用libevent的内置DNS支持...
LibEvent是一个广泛使用的开源库,它主要用于处理事件驱动的网络编程,尤其是在服务器端应用中。其核心功能是允许程序员定义一组事件,并在这些事件发生时执行相应的回调函数。在本文中,我们将深入探讨如何在Visual...
在`main`函数中,首先检查命令行参数以决定要加载的文件,然后初始化libevent库,调用`load_file`启动定时器,接着创建一个HTTP服务器`http_server`,监听指定的IP地址`http_addr`和端口`http_port`。通过`evhttp_...
libevent是一个开源的事件通知库,被广泛应用于高性能服务器开发中,尤其在处理大量并发连接时表现出色。它提供了一种统一的方式来处理各种事件源,如网络套接字、文件描述符、定时器等。本篇文章将围绕夏曹俊老师的...
创建一个简单的Java HttpServer,我们需要导入`com.sun.net.httpserver.HttpServer`类,并通过以下步骤实现: 1. 初始化HttpServer实例:`HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);...
基于libevent 2.0 bufferevent写的tcp网络服务器框架,参考了evhttp对bufferevent的封装,抽象出连接类,使得编写异步高性能的tcp服务器变得更加容易。 目前该框架在优势科技来电通后台服务器中应用,高效稳定。
基于libevent 2.0 bufferevent写的tcp网络服务器框架,参考了evhttp对bufferevent的封装,抽象出连接类,使得编写异步高性能的tcp服务器变得更加容易。 标签:dkserver
例如,标准库中的printf()函数用于输出文本,而Windows API中的CreateWindowEx()函数用于创建图形用户界面,OpenCV库的GaussianBlur()函数用于图像处理,libevent库的evhttp_new()函数则用于构建HTTP服务器。...