简体   繁体   English

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

[英]Difference between iphone 5s and iphone 6(tcp)

Is there any difference between iPhone 5s and iPhone 6 in TCP connection ? TCP connection iPhone 5s和iPhone 6有什么区别吗? I've run the same tcp code in 5s and 6, and in 6 is working fine, but 5s suddenly stop while getting data. 我在5s和6中运行相同的tcp代码,并且在6中工作正常,但5s在获取数据时突然停止。 When code running stop, event handler not working neither. 当代码运行停止时,事件处理程序也不工作。 iOS version in two devices are same to 12.1.4. 两个设备中的iOS版本与12.1.4相同。

init code 初始代码

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];

event handler code 事件处理程序代码

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;

I don't know why it have difference between 5s and 6 yet. 我不知道为什么它在5s和6之间有区别。

But I solve this problem by setting socket receive buffer size. 但我通过设置套接字接收缓冲区大小来解决这个问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM