【libevent】https client 拉取flv

本文档介绍了如何使用libevent在Windows上构建HTTPS客户端,特别是通过evhttp_connection_base_new和evhttp_connection_base_bufferevent_new创建HTTP请求连接。文章中提到在C++中构建HTTPS客户端会遇到问题,但提供了https-cli.cpp作为实例,并讨论了尝试用此客户端拉取FLV文件以适配ZLKMedia的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你可以使用libevent来实现一个基于HTTPS的客户端。libevent是一个开源的事件驱动库,支持多种网络协议和I/O模型。下面是一个简单的示例代码,演示如何使用libevent创建一个HTTPS客户端: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <event2/event.h> #include <event2/bufferevent_ssl.h> #include <openssl/ssl.h> void read_cb(struct bufferevent* bev, void* arg) { char buf[1024]; int n; while ((n = bufferevent_read(bev, buf, sizeof(buf) - 1)) > 0) { buf[n] = '\0'; printf("Received: %s\n", buf); } } void event_cb(struct bufferevent* bev, short events, void* arg) { if (events & BEV_EVENT_CONNECTED) { printf("Connected to server.\n"); const char* request = "GET / HTTP/1.1\r\n" "Host: www.example.com\r\n" "Connection: close\r\n\r\n"; bufferevent_write(bev, request, strlen(request)); } else if (events & BEV_EVENT_ERROR) { printf("Error: %s\n", strerror(errno)); } else if (events & BEV_EVENT_EOF) { printf("Connection closed.\n"); } bufferevent_free(bev); } int main() { struct event_base* base; struct bufferevent* bev; SSL_CTX* ssl_ctx; SSL_library_init(); SSL_load_error_strings(); ssl_ctx = SSL_CTX_new(SSLv23_client_method()); base = event_base_new(); bev = bufferevent_socket_new(base, -1, BEV_OPT_CLOSE_ON_FREE); bufferevent_setcb(bev, read_cb, NULL, event_cb, NULL); bufferevent_enable(bev, EV_READ | EV_WRITE); bufferevent_openssl_set_allow_dirty_shutdown(bev, 1); bufferevent_openssl_set_ssl(bev, ssl_ctx, SSL_new(ssl_ctx), BUFFEREVENT_SSL_CONNECTING, BEV_OPT_CLOSE_ON_FREE); struct sockaddr_in sin; memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(0x7f000001); // 127.0.0.1 sin.sin_port = htons(443); // HTTPS default port if (bufferevent_socket_connect(bev, (struct sockaddr*)&sin, sizeof(sin)) < 0) { printf("Error starting connection.\n"); return 1; } event_base_dispatch(base); SSL_CTX_free(ssl_ctx); event_base_free(base); return 0; } ``` 这段代码使用libevent创建了一个基于SSL的客户端,并发送了一个简单的HTTP GET请求。你可以根据你的需求进行修改和扩展。注意,你需要在编译时链接libevent和OpenSSL库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来不如迎风去

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值