NSStream Delegate NSStreamEventHasBytesDisponible No se llama

Estoy escribiendo una aplicación de postría que usa un NSStream para comunicarse con un server escrito en Python. El server funciona perfectamente con un cliente de Python. Pero cuando me conecto con un NSStream, el NSInputStream no parece tener ningún dato. El NSOutputStream, sin embargo, funciona perfectamente. Estoy abriendo la cadena así:

-(void)openStream { CFReadStreamRef readStream; CFWriteStreamRef writeStream; CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"tihmstar.dyndns.org", 80, &readStream, &writeStream); inputStream = (__bridge_transfer NSInputStream *)readStream; outputStream = (__bridge_transfer NSOutputStream *)writeStream; [inputStream setDelegate:self]; [outputStream setDelegate:self]; [inputStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; [outputStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; [inputStream open]; [outputStream open]; [self auth]; [[NSNotificationCenter defaultCenter] postNotificationName:@"InitCompleted" object:nil]; } 

El método delegado es el siguiente:

 - (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent { NSLog(@"Handle Event - "); switch (streamEvent) { case NSStreamEventOpenCompleted: NSLog(@"Stream opened"); break; case NSStreamEventHasBytesAvailable: NSLog(@"Bytes Available!"); if(theStream == inputStream) { NSLog(@"inputStream is ready."); uint8_t buf[1024]; unsigned int len = 0; len = [inputStream read:buf maxLength:1024]; if(len > 0) { NSMutableData* data=[[NSMutableData alloc] initWithLength:0]; [data appendBytes: (const void *)buf length:len]; NSString* string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; NSLog(@"Server said- %@", string); [self messageReceived:[string lowercaseString]]; } } break; case NSStreamEventErrorOccurnetworking: NSLog(@"Can not connect to the host!"); break; case NSStreamEventEndEncountenetworking: NSLog(@"End Encountenetworking"); break; case NSStreamEventHasSpaceAvailable: NSLog(@"Space Availible."); break; default: NSLog(@"Unknown event- %u", streamEvent); } } 

Mi problema es que nunca se llama NSStreamEventHasBytesAvailable, y por lo tanto, el post del server nunca se recibe. Alguien tiene alguna solución para esto? He encontrado algunas preguntas relacionadas aquí en StackOverflow, pero ninguna de ellas ha sido respondida.

Gracias por adelantado.

    Solo estaba buscando en el código. intente eliminar delegado de NSInputStream. Estaba buscando en el otro usando NSXMLParser initWithStream: ningún método de delegado de delegado recibido

    que trata con situaciones similares.

    No sé exactamente la respuesta para su pregunta pero sé exactamente que no debería llamar

     [self auth]; 

    después de que NSStream se abra de inmediato. Tienes que esperar

     NSStreamEventHasSpaceAvailable 

    evento para su NSOutputStream y luego escriba solo los datos dentro de él.