我有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个字节并停止.
为什么?帮帮我吧!
Merci d’avance!
最佳答案 您的数据对象需要位于流处理程序的外部.通常的情况是,当大量数据进入时,您可以获得大量数据而不是一次性获取数据.只需保持向其附加数据,直到收到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];
}