2

CFStreamCreateBoundPair 正在将 4kb 数据写入流,流将解析包含 xml 起始节点且不包含结束节点的数据。如何编写代码和管理代码,以便我们将正确的 xml 数据写入 nsoutputstream。

CFStreamCreateBoundPair(NULL, (CFReadStreamRef *)&iStream, (CFWriteStreamRef *)&oStream,4096);

4

1 回答 1

2

绑定流对的工作方式是,您可以将块写入写入流,而其他内容可以从读取流中读取块。您已transferBufferSize在此处设置为 4096。这表明数据将以 4096 字节 (4K) 的块从写入流移动到读取流。如果您的源数据大于 4K 但长度小于 8K,那就可以解释为什么您只得到它的前 4K。例如,如果您的数据长 6K,那么前 4K 将被发送到读取流,然后下一个 2K 将排队,但我的理解是它会在缓冲区中等待,直到发生以下两种情况之一:

  1. 足够的数据到达完成第二个 4K 块。
  2. 写入流已关闭。

因此,如果 6K 是您要写入写入流的全部内容,那么您需要关闭写入流,CFWriteStreamClose(oStream);以便将最后的 2K 发送到读取流。否则,我的期望是它会永远坐在那里。

于 2013-02-06T14:02:45.683 回答