`
myten
  • 浏览: 134429 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

libevent介绍,安装及结合Eclipse CDT构建工程

阅读更多

介绍

libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue、 IOCP等系统调用管理事件机制。著名分布式缓存软件memcached也是基于libevent,而且libevent在使用上可以做到跨平台,而且根 据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。

 

主要组成

libevent包括事件管理、缓存管理、DNS、HTTP、缓存事件几大部分。事件管理包括各种IO(socket)、定时器、信号等事件;缓存管理是 指evbuffer功能;DNS是libevent提供的一个异步DNS查询功能;HTTP是libevent的一个轻量级http实现,包括服务器和客 户端。libevent也支持ssl,这对于有安全需求的网络程序非常的重要,但是其支持不是很完善,比如http server的实现就不支持ssl。

 

个人观点

小巧且功能强大,本人下载2.0.22版本,体积855.0 kB,编译安装完后,再打包,体积1.9M,比起java来说,这实在是太浓缩了。

 

环境

系统:Linux Min-Mate 17.2 32bit

IDE:  Eclipse IDE for C/C++ Developers Version: Mars.1 Release (4.5.1)

GCC:gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)

第一步

下载并解压libevent-2.0.22-stable.tar.gz

cd  libevent-2.0.22-stable

./configure --prefix=/home/lyb/lib   (实际目录自己定义去)

make

make install

至此安装完毕,可进入/home/lyb/lib目录下查看

 

第二步

配置环境变量LD_LIBRARY_PATH

用户目录下

vi .profile (当然也可以修改/etc/profile)

增加如下代码

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/lyb/lib/libevent/lib

配置完毕后,就可以开始打开Eclipse构建自己工程了。

 

第三步

打开Eclipse CDT

新建工程后,按照下图添加Include 和 链接库

右键项目名称,Properties



 

 

完毕后,新建main.c,代码如下

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <event.h>
#include <evhttp.h>

void reqHandler(struct evhttp_request *req,void *arg)
{
	struct evbuffer *buf = evbuffer_new();

	// 发送响应
	evbuffer_add_printf(buf, "Thanks for the request");
	evhttp_send_reply(req,HTTP_OK,"Client",buf);

	evbuffer_free(buf);

	return;
}

int main(int argc,char **argv)
{
	short port = 8000;
	const char *addr = "192.168.0.119";
	struct evhttp *httpserv = NULL;

	event_init();
        // 启动http服务
	httpserv = evhttp_start(addr,port);

	// 设置回调
	evhttp_set_gencb(httpserv, reqHandler,NULL);
	printf("Server started on port %d\n",port);

	event_dispatch();

	return 0;
}

 

构建,然后执行,打开浏览器访问即可看到



 

至此已经使用libevent完成了一个简单的HttpServer的构建,至于如何实现类似Java Servlet的功能呢?

无非就是路径拦截,映射函数,调用执行罢了。

 

  • 大小: 84.6 KB
  • 大小: 83.7 KB
  • 大小: 19.8 KB
分享到:
评论

相关推荐

    libevent安装文件及方法

    **libevent库详解** Libevent是一个开源的、跨平台的事件通知库,它...以上就是libevent库的安装过程及其核心概念,以及与之关联的gcc编译器的简要介绍。希望这些信息能帮助你成功地在你的系统上安装并使用libevent。

    libevent的vs工程

    4. **构建步骤**:在VS中,开发者需要将libevent源代码添加到工程中,设置正确的项目属性,然后编译生成动态链接库(DLL)或静态链接库(LIB)。这一步骤可能涉及到解决依赖问题,比如确保所有必要的库文件和头文件...

    libevent2.1.7在Linux安装过程

    下面将详细介绍libevent2.1.7在Linux安装过程。 一、安装准备 在安装libevent2.1.7之前,需要确保系统环境已经满足要求。这里使用Redhat 6.4 64位系统,libevent版本为2.1.7,下载的源代码包为libevent-release-...

    libevent库安装

    总结,Libevent库提供了一种高效的方式来处理系统事件,如网络I/O,通过在Linux和Windows上正确安装并使用它,开发者可以构建高性能的并发服务器应用。记得在安装完成后,通过编写和运行测试代码来确认库已正确安装...

    安装 libevent

    本文将详细介绍如何在系统上安装`libevent`库及其PHP扩展。 #### 二、安装libevent **步骤1:下载libevent** 首先,访问libevent的官方网站(http://libevent.org/)获取最新版本的下载链接。根据题目中的描述,...

    fastdfs离线安装,包含gcc离线安装和libevent离线安装

    fastdfs离线安装,包含gcc离线安装和libevent离线安装

    libevent vs2013工程以及demo

    **libevent 库详解** Libevent 是一个高度可移植、事件驱动的库,它使得编写高...通过这些 demo,开发者可以更好地理解 Libevent 如何在实际应用中工作,并学习如何利用其强大的功能来构建高效、可扩展的网络应用。

    基于libevent的tcp server开发环境的完整工程

    本项目是一个基于libevent的TCP服务器开发环境的完整工程,旨在帮助开发者快速搭建并理解libevent在TCP服务器中的应用。 **libevent概述** libevent是一个事件通知库,它允许程序员注册文件描述符(如socket)或...

    memcached和libevent安装文件及客户端测试依赖包

    memcached版本:memcached-1.5.2.tar.gz libevent版本:libevent-2.0.22-stable.tar.gz 依赖包:java_memcached-release_2.6.3.jar等

    libevent参考手册中文版_libevent-2.1.5.pdf

    libevent是一个高性能的事件通知库,主要由Nick Mathewson和Abdul ...开发者需要熟悉libevent提供的各种事件监听和处理机制,以及对事件循环的控制,这样才能充分利用libevent的强大功能,构建出高效且可靠的网络应用。

    memcached安装软件 libevent magent memcached

    本篇文章将详细讲解如何安装和配置memcached,以及与之相关的libevent和magent。 首先,我们需要了解libevent库。libevent是一个事件通知库,它允许程序处理多个网络连接,并有效地处理来自不同源的事件。在安装...

    libevent在vs下编译工程

    前段时间看了下libevent的文档,把代码搞过来看了一下,做了一个vs的工程,花了一两个小时。免得下次又弄这些无谓的工作,上传到共享里。有需要的朋友也可以省点时间。工程是vs2008的,到其他版本也是可以使用的。

    libevent源码及库文件

    4. `Makefile` 和其他构建文件:用于编译和构建`libevent`库和可执行文件。 通过研究这些源码和库文件,开发者可以深入了解`libevent`的工作机制,进一步优化和定制自己的事件驱动程序。`libevent` 的强大在于其...

    libevent 参考手册中文版及源码解析

    标题"libevent 参考手册中文版及源码解析"表明了本次学习的主题,重点是libevent库,包含了中文参考手册和源码的深度解析。libevent是一个开源的事件通知库,它使开发者能够方便地处理各种网络事件,如TCP、UDP、...

    libevent的vs2013工程

    本篇将详细介绍如何将Libevent整合到VS2013工程中,以便在Windows平台上进行C++开发和调试。 1. **下载与解压Libevent源码** 首先,你需要从官方仓库或第三方源获取Libevent的源码,解压后得到的文件夹通常包含`...

    libevent vs2010工程(包含openssl)

    标题"libevent vs2010工程(包含openssl)"表明这是一个关于使用Visual Studio 2010(VS2010)编译libevent库的项目,而且这个库包含了对OpenSSL的支持。libevent是一个开源的事件通知库,常用于网络编程,提供异步...

    基于libevent 2.1.18固件制作的vs2017最简洁工程

    **基于libevent 2.1.18固件制作的vs2017最简洁工程** Libevent是一个事件通知库,它允许程序员在多种平台上编写高性能、可移植的网络服务器和客户端程序。这个工程是针对Visual Studio 2017(VS2017)编译环境构建...

    VS2003使用libevent库实现的httpd范例工程

    "VS2003使用libevent库实现的httpd范例工程" 指的是一个使用Visual Studio 2003(VS2003)开发的项目,该项目集成并应用了libevent库来构建一个简单的HTTP服务器。libevent是一个开源的事件通知库,它允许程序员在多...

    libevent-1.4.8-stable.tar.gz

    libevent负责处理网络事件,而memcached则作为数据的临时存储,两者结合可以构建出高性能的分布式缓存解决方案。 libevent的核心功能在于提供了一种机制,让程序可以处理大量的并发连接,而无需为每个连接创建一个...

    libevent(2.1.8)库及头文件文件

    标题中的"libevent(2.1.8)库及头文件文件"指的是一个开源的事件通知库——Libevent的特定版本,即2.1.8稳定版。这个库提供了异步网络I/O和时间事件处理的能力,广泛应用于服务器端的开发,如HTTP服务器、DNS解析器...

Global site tag (gtag.js) - Google Analytics