0

我有一个 iOS 应用程序,我在其中使用 NSInputStream(基于 CFReadStreamRef)从网络套接字读取。我不断从服务器获取数据,并不断读取和处理它(使用read:bytesBuffer maxLength:l)。前几次它运行良好,但在大约第 20-25 次读取时,此方法报告它读取了大量字节,例如,当我真正要求最大1-3MBytes时,它读取了4,294,967,295字节。这很奇怪,似乎是 NSInputStream/CFReadStream API 中的一个错误。

我的应用程序最终崩溃,因为它试图将所有这些字节加载到一个没有为返回的字节数分配的缓冲区中(并且服务器首先没有返回这么多字节!)

有没有人遇到过这个问题?

谢谢!

4

1 回答 1

3

from 的返回值read:maxLength:是一个NSInteger失败的负数。您可能正在将其转换为无符号整数类型,这会将负数转换为巨大的正数。

于 2012-09-28T07:00:36.147 回答