1

我很困惑。我有一个开放的 NSInputStream 认为它有可用的字节。当我读取字节时,操作总是返回 0。我到处搜索,我的代码看起来像大多数其他人都在做同样的事情。这是一个如此低级的操作,我无法弄清楚它是如何出错的。我已经通过连接到许多不同的主机来尝试过这个。我也看过 Wireshark,我可以看到主机接收到我写的字节,但是 read:maxBytes 操作仍然总是返回 0???

case NSStreamEventHasBytesAvailable:
    {
        //Check stream status
        NSString *returnedStatus;
        commandLength = [commandString length];
        [commandString deleteCharactersInRange:NSMakeRange(0, commandLength)];
        returnedStatus = [NSString stringWithString:[self decodeStatus:[stream streamStatus]]];
        [commandString appendFormat:@"inputStream %@ status=%@\n",stream, returnedStatus];
        [self writeCommand:commandString];


        uint8_t *buf[buffLength];
        NSUInteger len = 0;

        len = [(NSInputStream *)stream read:(uint8_t *)buf maxLength:buffLength];

        if (len == 0) {
            //len = buffLength;
            [self writeCommand:@"No bytes read!\n"];
        }
4

1 回答 1

5

我也遇到了这个问题,我在文档中找到了答案:

- (BOOL)hasBytesAvailable

返回值:

如果接收器有可读取的字节,则为 YES,否则为 NO。如果必须尝试读取以确定字节的可用性,也可能返回 YES。

于 2011-09-28T12:03:17.520 回答