加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iPhone SDK – NSStreamEventHasBytesAvailable / appendBytes:

发布时间:2020-12-14 17:17:49 所属栏目:百科 来源:网络整理
导读:免责声明:我是 Xcode / iPhone SDK Noob. 我正在尝试建立与现有服务器的客户端TCP / IP连接.连接后,我希望收到一些有关服务器的数据(版本等). 建立连接后,NSStreamEventOpenCompleted事件将触发,因此我知道已建立连接.接下来,NSStreamEventHasBytesAvailabl
免责声明:我是 Xcode / iPhone SDK Noob.

我正在尝试建立与现有服务器的客户端TCP / IP连接.连接后,我希望收到一些有关服务器的数据(版本等).

建立连接后,NSStreamEventOpenCompleted事件将触发,因此我知道已建立连接.接下来,NSStreamEventHasBytesAvailable事件将触发,我正在执行以下代码.值71(int)存储在len中,我认为这是正确的.但是,行

[data appendBytes:&buffer length:len];

正在崩溃(我想).没有抛出实际错误,但我确实看到了__TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION__,即使我已经清楚地添加了错误捕获:

case NSStreamEventHasBytesAvailable:
    {
        NSMutableData *data=[[NSMutableData alloc] init];

        uint8_t *buffer[1024];
        unsigned int len=0;

        len=[(NSInputStream *)stream  read:buffer maxLength:1024];
        if(len>0){  
            @try{
                [data appendBytes:&buffer length:len];
            }
            @catch(NSException *ex){
                NSLog(@"Fail: %@",ex); 
            }
            [statusLabel setText:[data stringValue]];
            //[bytesRead setIntValue:[bytesRead intValue]+len];
        }else{
            NSLog(@"No Buffer");
        }
        break ;
    }

解决方法

将缓冲区声明为:

uint8_t buffer[1024];

并附加为:

[data appendBytes:buffer length:len];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读