linux - 用于非阻塞、面向行的套接字 I/O 的 C++ 库?

标签 linux sockets select nonblocking epoll

我将编写一个 Linux 客户端,它将与五个(或更多)服务器建立套接字连接。客户端将向每个人发送一个“行”(一个字符串后跟“\n”),并将从每个人收到一条返回的行。

我想在客户端使用select()epoll();但是,这是基于 TCP 和流的,当 select() 弹出时,我不能保证在系统缓冲区中有一整行。我正在寻找的是一个库,它提供类似于 epoll()sysread() 的 API,但在整个 的基础上工作strong> 的数据正在缓冲并准备好读取。

我很惊讶在我的 Internet 搜索中找不到这样的东西 - 我本以为这是一个相当普遍的需求。 (也许我对问题的措辞不正确。)编写起来似乎并不太难,但我怀疑开源解决方案会更安全。

最佳答案

看看 boost asio .特别是它有一个 async_read_until功能

Start an asynchronous operation to read data into a streambuf until it contains a delimiter, matches a regular expression, or a function object indicates a match.

如果您使用的是 http,我还建议 cpp-netlib支持 asynchronous clients .

关于linux - 用于非阻塞、面向行的套接字 I/O 的 C++ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543042/

相关文章:

linux - 移动和重命名 Xml 文件

java - 使用 OkHttp 4.5.0 随机获取 java.io.InterruptedIOException

c++ - 这个 GCC 优化不正确吗?

linux - 在 Perl 中覆盖 Excel 文件的现有工作表

c++ - 使用 C++ 在 char 数组最后一个索引中添加值

C select总是检测到套接字可读

mysql - SQL - 从那里选择即将到来的事件和一周后的所有事件

MySQL:选择按字数排序的行

linux - 如何在 Linux 上使用核心转储和 gdb 使用一个近似虚拟内存 (VSZ)?

c - 如何发送和接收数据套接字TCP (C/C++)