私は困惑しています。使用可能なバイトがあると考えるオープン 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"];
}