iphone 5s和iphone 6(tcp)的区别

问题描述 投票:0回答:1

TCP connection中的iPhone 5s和iPhone 6有什么区别吗?我在5s和6中运行相同的tcp代码,并且在6中工作正常,但是5s在获取数据时突然停止。当代码运行停止时,事件处理程序也不工作。两个设备中的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;
ios iphone tcp inputstream handler
1个回答
0
投票

我不知道为什么它在5s和6之间有区别。

但我通过设置套接字接收缓冲区大小来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.