NSInputStream读取:maxlength:返回的字节数多于maxlength

时间:2012-09-28 06:40:47

标签: objective-c ios tcp nsinputstream

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:3)

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