Есть ли разница между iPhone 5s и iPhone 6 в TCP connection
?
Я запустил один и тот же код tcp
в 5 и 6, а в 6 работает нормально, но 5-ые внезапно прекращаются при получении данных.
Когда код запускается, обработчик событий не работает.
Версия iOS на двух устройствах одинакова с 12.1.4.
код инициализации
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,
(__bridge CFStringRef) serverip,
serverport,
& _readStream,
& _writeStream);
self.inputStream = (__bridge NSInputStream *)self.readStream;
[self.inputStream setDelegate:self];
[self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
self.outputStream = (__bridge NSOutputStream *)self.writeStream;
[self.outputStream setDelegate:self];
[self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
[self.inputStream open];
[self.outputStream open];
код обработчика события
else if(eventCode == NSStreamEventHasBytesAvailable)
{
if([aStream isEqual: self.inputStream])
{
NSInteger len = 0;
uint8_t buf[4096];
len = [self.inputStream read:buf maxLength:4096];
if(len > 0)
{
NSMutableData* data = [[NSMutableData alloc] initWithLength:0];
[data appendBytes: (const void *)buf length:len];
[file_handler writeData:data];
len_read = len_read + (int)len;
if(len_read >= file_length) // download complete
{
@synchronized (self)
{
[self.inputStream close];
[self.inputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
[self.inputStream setDelegate:nil];
self.inputStream = nil;
[self.outputStream close];
[self.outputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
[self.outputStream setDelegate:nil];
self.outputStream = nil;