移植libevent到嵌入式设备搭建http服务器

一、移植libenvet

1.官网下载源码压缩包地址:https://libevent.org/
2.执行下面命令

tar -zxvf libevent-2.1.11-stable.tar.gz

cd libevent-2.1.11-stable

./configure --disable-openssl --prefix=/usr/ --host=mips-linux-gnu CC=/home/env/mips-gcc720-glibc229/bin/mips-linux-gnu-gcc

make

sudo make install


安装成功后会在安装目录/usr/ 下生成3个子目录 /lib  /include  /bin

卸载 :sudo make uninstall

  • ./configure:这是许多开源软件包中的脚本,用于配置软件包的构建选项。
  • --disable-openssl:表示在编译libevent时不启用OpenSSL支持。
  • --prefix:指定安装路径为 /usr/ 目录。
  • --host:指定交叉编译的主机类型为MIPS架构的Linux系统。
  • CC=:指定交叉编译使用的C编译器路径。

二、嵌入式设备服务器代码实现

1.为设备添加指定动态链接共享库的路径,/usr/lib下是刚刚编译出来的 lib子目录

export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH

2.测试代码
#include <event.h>
#include <evhttp.h>

#define BUF_MAX 1024*1024*5

void request_handler(struct evhttp_request *req, void *arg) {

	if(req == NULL) {
		printf("req is null.");
		return;
	}
	
    //获取请求的数据
    char buf[BUF_MAX] = {0};
    size_t data_size = evbuffer_get_length(req->input_buffer);
    size_t len = data_size > BUF_MAX ? BUF_MAX : data_size;
    memcpy(buf, evbuffer_pullup(req->input_buffer,-1), len);
	buf[data_size] = '\0';

	if(strlen(buf) > 0) {
		printf("request data:%s",buf);
	}
	
	//响应客户端
	struct evbuffer *ret = evbuffer_new();
	if(ret != NULL) {
        evbuffer_add_printf(ret,"{\"result\":1,\"success\":true}");
        evhttp_send_reply(req,HTTP_OK,"application/x-www-form-urlencoded",ret);
        evbuffer_free(ret);
	}
}

int main()
{   
    struct evhttp *http_server = NULL;
	short http_port = 8888;
	char *http_addr = "0.0.0.0";
	
	//初始化
	event_init();
	//开启http服务器
	http_server = evhttp_start(http_addr,http_port);
    //判断是否成功
	if(http_server)
	{
        printf("start success\n\n\n");
	}
    else{
        printf("start failed\n\n");
		return -1;
    }
	
	//设置请求超时时间(s)
	evhttp_set_timeout(http_server,5);

    //设置一个通用回调函数,用于处理所有没有特定回调函数的HTTP请求
    evhttp_set_gencb(http_server,request_handler, NULL);   
    //用于设置特定路径的回调
	//evhttp_set_cb(http_server,"/getDeviceKey",request_handler,NULL);

    
	//循环监听
	event_dispatch();
	evhttp_free(http_server);
}
3.编译

-I/usr/include  -L/usr/lib -levent

三、客户端可以使用postman软件测试

官网下载地址:https://www.postman.com/downloads/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值