我写了一个解析器来解析我在TCP读取中得到的数据,因为即使发送多个数据包,它们也可能在一次读取中得到,我的问题是,如果一次数据包可能在2个读取命令中读取,或者我读取了一些数据这意味着所有分组数据都可用,并且将在同一个呼叫中读取?
答案 0 :(得分:0)
答案 1 :(得分:0)
TCP是一个流 - 只有下面的IP层将其划分为单个数据包。您调用Send()
或类似的API,然后IP层将流划分为任何它认为合适的方式。因此,您不能依赖于一次调用中的整个缓冲区。
或者,用一个极端的例子来解释:想象一下你打电话给Send(huge_1GB_buffer)
。您期望读取行为如何?