gpt4 book ai didi

iphone - 真实 iPhone 上的 NSInputStream 问题

转载 作者:行者123 更新时间:2023-12-03 19:20:45 27 4
gpt4 key购买 nike

我的 NSInputStream 遇到问题。这是我的代码:

case NSStreamEventHasBytesAvailable:

printf("BYTE AVAILABLE\n");

int len = 0;
NSMutableData *data = [[NSMutableData alloc] init];

uint8_t buffer[32768];

if(stream == iStream)
{
printf("Receiving...\n");

len = [iStream read:buffer maxLength:32768];

[data appendBytes:buffer length:len];

}
[iStream close];

我尝试读取小数据,它在模拟器和真实 iPhone 上完美运行。如果我尝试读取大数据(超过 4kB 或可能 5kB),真正的 iPhone 只能读取 2736 字节并停止。

这是为什么呢?请帮助我!谢谢!

最佳答案

您的数据对象需要位于流处理程序的外部。通常的情况是,当大量数据传入时,您会分块获取数据,而不是一次性获取全部数据。只需继续向其追加数据,直到收到 bytesRead == 0;然后您可以关闭流并使用数据。

   case NSStreamEventHasBytesAvailable: {
NSInteger bytesRead;
uint8_t buffer[32768];

// Pull some data off the network.

bytesRead = [self._networkStream read:buffer maxLength:sizeof(buffer)];

if (bytesRead == -1) {
[self _stopReceiveWithFailure];
} else if (bytesRead == 0) {
[self _stopReceiveWithSuccess];
} else {
[data appendBytes:buffer length:len];
}

关于iphone - 真实 iPhone 上的 NSInputStream 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2108545/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com