问题标签 [libevent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2618 浏览

c - 用cygwin在windows下构建libevent?

我在具有多线程功能支持的 cygwin-windows 下构建 libevent-2.0.16-stable 但似乎configure没有将环境检测为 WIN32,因此它没有包含evthread_win32.c在构建过​​程中,尝试调用evthread_use_windows_threads导致符号不成立。
所以我尝试设置 WIN32 标志CFLAGS=WIN32 ./configure,但它也不起作用。那么正确的方法是什么?

0 投票
1 回答
1450 浏览

c - C & Libevent:将二进制数据添加到输出缓冲区

我有一个输出 evbuffer,我想用以下数据填充:

我正在使用evbuffer_add_printf(...)

我有以下 C 回调函数:

所以我有二进制数据指针(binData)和一个长度(contLen),我如何将它打印到输出缓冲区?

提前谢谢了

0 投票
1 回答
1590 浏览

c - 编译 systrace 会给出“声明说明符中的两种或多种数据类型”

我一直在尝试在 Ubuntu 上编译 systrace (1.6g)。当我使用 libevent 2.0.16 时,出现以下编译错误:

这些是 /usr/include/netinet/in.h 中的相应行:

谁能提供有关我可以在 netinet/in.h 中更改哪些内容以使其正常工作的任何见解?

0 投票
1 回答
1398 浏览

cppunit - 如何为由 libevent 管理的事件驱动应用程序编写单元测试?

我正在使用 libevent 库为异步 I/O 编写一个事件驱动的应用程序。本质上,应用程序有一个 evconnlistener 监听端口上的数据。在接收数据时,数据会根据数据负载转发到相应的 http REST 端点。转发组件使用 libevent 提供的 evhttp_*。

我能够将应用程序作为外部进程进行测试,以满足应用程序的健全性,但是在生成代码覆盖率报告时我感到很困惑。如何编写可以通过常规单元测试框架(例如 cppunit)调用的单元测试?

0 投票
2 回答
3185 浏览

c++ - 如何在 Windows 上编译 libevent2?

我正在尝试将此 libevent2 包编译到 Windows,但目前我不能,因为配置脚本是一个 shell 脚本(/bin/sh;不能在 Windows 中运行)。

有什么方法可以编译它或获得预编译包?我目前安装了 MinGW、CMake 和 MS C++。

编辑:我已经设法使用nmake Makefile.nmake编译 libevent2,但它没有生成任何 Windows 二进制文件/库。只有.lib。

生成文件如下 -

0 投票
1 回答
4715 浏览

c++ - 带有 libevent/libev 的 C 或 C++:监视 unix 套接字

我正在尝试监视一个 unix 套接字(“/tmp/mysocket”)。

我可以在 Node.js 中很好地做到这一点:当 1) 绑定套接字、2) 有人连接到套接字、3) 将数据发送到套接字和 4) 套接字断开连接时,它会引发一个事件。

我现在正尝试在 C/C++ 中执行此操作:我想监视“/tmp/mysocket”的上述事件。我查看了 libevent(我更喜欢使用它),但看到它需要一个 IP:端口。有什么方法可以监控 unix 套接字?

或者任何人都可以建议另一个 C/C++ 解决方案?

0 投票
1 回答
1116 浏览

php - Libevent 超时循环退出

我在让 PHP libevent 扩展在超时时跳​​出循环时遇到了一些困难。这是我到目前为止基于 PHP.net 文档页面上的演示所获得的内容:

我可以看到event_add传递给 print_line() 的事件的超时值,如果这些事件相隔超过 2 秒,我会得到一个EV_TIMEOUT而不是EV_READ. 然而,我想要的是让 libevent 在print_line达到超时后立即调用,而不是等待下一个事件来给我超时。

我试过使用event_base_loopexit($base, 2000000),这会导致事件循环立即退出而不阻塞事件。我也尝试过传递EV_TIMEOUTevent_set,这似乎根本没有效果。

有没有人设法让这个工作?我知道 event_buffer_* 东西适用于超时,但是我想使用标准event_base函数。其中一个PECL 错误谈到了 event_timer_* 函数,这些函数确实存在于我的系统上,但是它们根本没有记录在案。

0 投票
2 回答
9411 浏览

multithreading - Libevent 多线程支持

我有几个关于 libevent2 及其多线程支持的问题。

libevent 支持多线程吗?我想要实现的是这样的:

  1. 在单个线程中创建 event_base。
    • 在这个单线程中设置事件并将它们关联到事件库。还要为每个观察到的事件注册回调。
  2. 一旦观察到的事件发生,就在其他(工作)线程中执行注册的回调。

有可能用 libevent 做这样的事情吗?或者有没有其他方法来支持多核?

非常感谢你

0 投票
1 回答
1474 浏览

c - 服务器 - 同步 I/O 多路复用(套接字)

我在 C/Linux 中实现了一个使用 TCP 套接字的聊天服务器。它当前使用单个进程并使用 select() 来防止服务器阻塞。我读过 select() 是一种非常慢的方法,我希望将服务器升级到更高效的版本。

我目前正在研究 libevent,但我希望在设计快速服务器代码方面有经验的人能给我一些关于可用的最快技术的一些指示。libevent 是一个可靠的选择还是我应该研究一些更好的东西?

我真的很感激任何帮助!

0 投票
2 回答
41826 浏览

libevent - libev 和 libevent 有什么区别?

这两个库都是为异步 i/o 调度而设计的,并且都在 linux 上使用 epoll,在 FreeBSD 上使用 kqueue 等。

除了表面上的差异,我的意思是这两个库之间真正的区别是什么?关于建筑,或设计理念?