Libevent bufferevent 的 evbuffer_add

Posted

技术标签:

【中文标题】Libevent bufferevent 的 evbuffer_add【英文标题】:Libevent bufferevent's evbuffer_add 【发布时间】:2015-04-13 06:47:36 【问题描述】:

我正在使用 Libevent 库 2.0 进行套接字通信。 为了向evbuffer添加数据,我使用了evbuffer_add。 bufferevent 将数据存储在其内部缓冲区中,并使用一些预定义的超时和水印设置通过套接字传输数据。

我的问题是,有没有办法控制数据传输?我们可以在写入任意随机字节数之后的任何时间显式传输数据吗?

【问题讨论】:

【参考方案1】:

此功能背后的理念是即发即弃。但是,您可以添加一个回调,以便在发送最终发生时,您可以做一些事情: evbuffer_add_cb

这不允许您进行太多控制,但您可以将其用于某些行为,例如附加缓冲区。

【讨论】:

我想每次传输固定数量的字节。然而,即使在设置写水印高 = 4K 之后,有时也只发送不到 1K 字节。有没有办法通过添加一些填充字节或任何其他机制来强制传输?

以上是关于Libevent bufferevent 的 evbuffer_add的主要内容,如果未能解决你的问题,请参考以下文章

libevent源码分析:event_addevent_del

libevent : 如果相关套接字被本地程序关闭,是不是可以触发事件

使用 libevent2 处理文件 I/O 的问题

Libevent源码分析--- bufferevent

libevent入门

Libevent源码分析--- 基本数据结构