objective-c - CFStreamCreateBoundPair正在将4kb数据写入流,流将解析包含xml起始节点但不包含结束节点的数据

标签 objective-c stream nsoutputstream

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

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

最佳答案

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

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

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

关于objective-c - CFStreamCreateBoundPair正在将4kb数据写入流,流将解析包含xml起始节点但不包含结束节点的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730613/

相关文章:

ios - NSInputStream 和 NSOutputStream 问题

cocoa - 在 Cocoa 中通过 TCP 发送大文件的最佳方式

objective-c - 如何修复 "Protocol Not Implemented"

java - 为什么 AudioInputStream 读取永远不会返回 -1?

javascript - 二进制数据的部分 XHR 响应读取,可能吗?

c# - 将 MemoryStream 保存到文件或从文件加载 MemoryStream

ios - 使用 NSOutputstream 有什么好处?

ios - 为 CALayer 的蒙版制作动画

objective-c - 在@implementation 中声明的变量

ios - 如何根据条件设置初始 View Controller ?