【发布时间】:2012-03-02 23:34:27
【问题描述】:
所以我的主要问题是如何在 asio tcp::socket 或 tcp::iostream 之上实现一个结构来实现some kind of input-seekable filter
缓冲高达1kb?
【问题讨论】:
-
一个问题是很难在异步套接字上使用流。例如,您从流中读取一个字符串,直到缓冲区中没有更多字符串。但是你(或流)怎么知道它是否真的是字符串的结尾呢?其余的可能会在另一个数据包中,并且无法知道何时或是否会交付。
-
出于好奇,您看过这个吗? stackoverflow.com/questions/3668128/…
-
@JoachimPileborg:这非常容易知道 - 直到您到达流的末尾或套接字上的错误。其余的是严重依赖于使用的高级协议的业务逻辑。话虽如此,缓冲是必需的,但是为此使用 C++ iostream 是脑死的。出于这个原因,Libevent 提供了很好的通用缓冲区 API。
-
你不能有一个可搜索的流,因为你必须阅读整个响应才能搜索结束,然后数据将不可用。因此,您的缓冲区必须与要搜索的位置一样大。
-
漂亮的图表,但这不是一个特别好的 SO 问题,当然也不值得 12 分。你试过什么?
标签: c++ boost boost-asio iostream