我将要编写一个 Linux 客户端,该客户端将建立到五台(或大约)服务器的套接字连接。客户端将向每条线发送“行”(字符串,后跟“\n”),并从每条线返回一行。

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

令我感到惊讶的是,我无法在Internet搜索中找到类似的内容-我以为这是一个相当普遍的需求。 (也许我没有正确说出问题的措辞。)写起来似乎不太困难,但是我怀疑开源解决方案会更加防弹。

最佳答案

看一下boost asio。特别是它有一个 async_read_until 函数,它可以



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

10-05 21:02
查看更多