vs2017 配置libevent2.0详细过程

一、编译并安装libevent

这里编译好了,版本libevent2.0
网盘链接:[Link]
提取码:gnu8

二、配置环境

1、附加包含目录

右键项目 - 属性 - C/C++ - 常规 - 附加包含目录

请添加图片描述

2、附加库目录

右键项目 - 属性 - 链接器 - 常规 - 附加库目录

请添加图片描述

3、附加依赖项

右键项目 - 属性 - 链接器 - 输入 - 附加依赖项

 Iphlpapi.lib
 wsock32.lib
 ws2_32.lib
 event.lib
 event_core.lib
 event_extra.lib

请添加图片描述

三、测试代码

Server.h

#pragma once
#ifndef SERVER_H
#define SERVER_H

class Server
{
public:
	explicit Server();
	~Server();

public:
	// 开启服务器
	void start();
};

void api_info(struct evhttp_request* req, void* arg);

#endif

Server.cpp

#include "Server.h"
#pragma comment(lib, "ws2_32.lib")
#include <WinSock2.h>
#include <WS2tcpip.h>
#include <iostream>
#include <thread>
#include <ctime>
 
#include <event2/event.h>
#include <event2/http.h>
#include <event2/buffer.h>
#include <event2/http_struct.h>
using namespace std;

Server::Server() 
{
	WSADATA wdSockMsg;
	int s = WSAStartup(MAKEWORD(2, 2), &wdSockMsg);
	if (0 != s)
	{
		switch (s)
		{
		case WSASYSNOTREADY: printf("重启电脑,或者检查网络库");   break;
		case WSAVERNOTSUPPORTED: printf("请更新网络库");  break;
		case WSAEINPROGRESS: printf("请重新启动");  break;
		case WSAEPROCLIM:  printf("请关闭不必要的软件,以确保有足够的网络资源"); break;
		}
	}

	if (2 != HIBYTE(wdSockMsg.wVersion) || 2 != LOBYTE(wdSockMsg.wVersion))
	{
		return;
	}
}
Server::~Server() {}

// 开启服务器
void Server::start() {
	cout << "执行start()!" << endl;

	event_config* evt_config = event_config_new();
	struct event_base* base = event_base_new_with_config(evt_config);
	struct evhttp* http = evhttp_new(base);
	evhttp_set_default_content_type(http, "text/html; charset=utf-8");
	evhttp_set_timeout(http, 30);

	// 设置路由
	evhttp_set_cb(http, "/api_info", api_info, nullptr);
	// 设置 ip 和 port
	evhttp_bind_socket(http, "127.0.0.1", 9001);
	//开启循环
	event_base_dispatch(base);
	//销毁资源
	event_base_free(base);
	evhttp_free(http);
	event_config_free(evt_config);
}

void api_info(struct evhttp_request* req, void* arg) {
	cout << "-----api_info----- "<< endl;
		
	//固定写法
	struct evbuffer* buff = evbuffer_new();
	evbuffer_add_printf(buff, "%s", "return");	//要返回的值”return“
	evhttp_send_reply(req, HTTP_OK, nullptr, buff);
	evbuffer_free(buff);
	
}

main.cpp

#include"Server.h"

int main()
{
	Server server;
	server.start();
}

四、测试结果

  • 打开浏览器 - http://127.0.0.1:9001/api_info
  • 运行结果打印:-----api_info-----,且返回"return",说明接口设置完成。

请添加图片描述

请添加图片描述

五、参考链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值