2011-07-14 114 views
0

我很困惑。我有一个开放的NSInputStream,它认为它有可用的字节。当我读取字节时,操作总是返回0.我到处搜索,我的代码看起来像大多数人都在做同样的事情。这是一个低级别的操作,我无法弄清楚它是如何出错的。 我已经通过连接到许多不同的主机来尝试这种方式。我也看着Wireshark,我可以看到主机接收到我写的字节,但是读取:maxBytes操作仍然总是返回0NSInputStream阅读: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"]; 
     } 
+0

嗨,任何运气,我也面临同样的问题... – Amitg2k12

回答

4

我也碰到这个问题,我发现在文档中的答案:

- (BOOL)hasBytesAvailable 

返回值:

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