2011-07-14 9 views
0

私はうんざりです。私は利用可能なバイトを持っていると思うオープンなNSInputStreamを持っています。バイトを読み取ると、操作は常に0を返します。私はどこでも検索しましたが、私のコードはほとんどの人が同じことをしているように見えます。これは低レベルの操作なので、どうやって間違っているのか分かりません。 私はさまざまなホストに接続することでこれを試しました。私もWiresharkを見て、ホストがバイトを受け取っているのを見ることができますが、read:maxBytesオペレーションは常に0を返します???NSInputStream読み取り: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を返します。

関連する問題