我将编写一个 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/