我在我的应用程序中使用libevent2来托管一个http服务器。我找不到一种内置的方法来压缩输出。
以下是我正在考虑的选择:
应用zlib过滤器
(两者都从接受编码头读取支持的压缩格式)
有什么更简单的方法可以让我忽略,还是这样?
发布于 2012-02-02 06:41:35
我使用这个小技巧来获取evhttp_connection的文件描述符,它就在您想要的指针旁边。这是一次令人讨厌的黑客攻击,但它很简单,而且很容易重建。它已经在x86_64下进行了测试,运行良好。
static void
send_document_cb(struct evhttp_request *req, void *arg)
{
// ....
struct evhttp_connection *this_connection;
this_connection = evhttp_request_get_connection(req);
int *tricky;
tricky = (((int *)this_connection) + 4);
int fd = *tricky;
printf("fd: %i\n", fd);
// ....
}从结构定义(下面)看,您想要的bufev应该可以使用(void *)this_connection) + 8)或非常类似的东西访问。
struct evhttp_connection {
TAILQ_ENTRY(evhttp_connection) next;
evutil_socket_t fd;
struct bufferevent *bufev;
...
}https://stackoverflow.com/questions/5210255
复制相似问题