NSStreamEventHasBytesAvailable de NSInputStream nunca se llama

Estoy creando una aplicación similar a WiTap (pero para conectar muchos dispositivos) y aquí está mi problema: parece que la aplicación conecta los dispositivos (se muestran en el controller de vista de tabla). El delegado de NSInput/OutputStream dice que ambas secuencias se abren, pero cuando Envío el package a NSOutputStream que la function en el dispositivo opuesto con NSInputStream no se llama (NSStreamEventHasBytesAvailible en - (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode) .

Aquí está el código que está haciendo la connection y enviando y recibiendo …

 //Service was resolved - (void)netServiceDidResolveAddress:(NSNetService *)netService { //Get the streams from NSNetService NSInputStream *inStream = nil; NSOutputStream *outStream = nil; [netService getInputStream:&inStream outputStream:&outStream]; [inStream setDelegate:self]; [inStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; [inStream open]; [outStream setDelegate:self]; [outStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; [outStream open]; [self.inStreams addObject:inStream]; [self.outStreams addObject:outStream]; //Add NSNetService between connected devices [self.resolvedServices addObject:netService]; [self updateUI]; } //event handling - (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode { switch (eventCode) { case NSStreamEventHasBytesAvailable: { NSMutableData *inBuffer = [[NSMutableData alloc] init]; NSInputStream *inStream = (NSInputStream *)aStream; uint8_t buffer[3]; NSInteger len = 0; NSInteger packetNumber = 0; len = [inStream read:buffer maxLength:3]; if(len > 0) { [inBuffer appendBytes:buffer length:len]; [inBuffer getBytes:&packetNumber length:len]; [self.delegate stream:inStream didReceivePacketNumber:[NSNumber numberWithInteger:packetNumber]]; } } break; case NSStreamEventHasSpaceAvailable: if ([aStream isKindOfClass:[NSOutputStream class]]) NSLog(@"NSStream \"%@\" has space availible",aStream); break; case NSStreamEventOpenCompleted: if ([aStream isKindOfClass:[NSInputStream class]]) NSLog(@"NSInputStream opened"); else if ([aStream isKindOfClass:[NSOutputStream class]]) NSLog(@"NSOutputStream opened"); break; case NSStreamEventErrorOccurnetworking: NSLog(@"NSStream \"%@\" occurnetworking an error: %@",aStream,[aStream streamError]); break; case NSStreamEventEndEncountenetworking: NSLog(@"Stream \"%@\" has been closed",aStream); [aStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; [aStream close]; NSUInteger index = 0; if ([aStream isKindOfClass:[NSOutputStream class]]) { index = [self.outStreams indexOfObject:aStream]; [self.outStreams removeObject:aStream]; [self.inStreams removeObjectAtIndex:index]; } else if ([aStream isKindOfClass:[NSInputStream class]]) { index = [self.inStreams indexOfObject:aStream]; [self.inStreams removeObject:aStream]; [self.outStreams removeObjectAtIndex:index]; } [self.availibleServices removeObjectAtIndex:index]; [self.resolvedServices removeObjectAtIndex:index]; break; default: break; } } //sending //Data pushing into NSStreams - (void)sendData:(NSData *)data toStream:(NSOutputStream *)aStream { if ([aStream hasSpaceAvailable]) { NSLog(@"%i",[aStream write:[data bytes] maxLength:[data length]]); } } 

Traté de depurar el proyecto usando Instrumentos (la cosa de la networking). Dice que el package se envía y recibe, pero el evento nunca ocurre. Gracias por tu ayuda. Si alguien quiere, no tengo problemas para enviar todo el proyecto …