ios iphone cocoa-touch nsstream

ios - ¿Cómo llamar a NSStreamDelegate con NSStreamEventOpenCompleted?



iphone cocoa-touch (1)

He estado trabajando en un NSStreamDelegate , he implementado la devolución de llamada, he inicializado el flujo de entrada y salida en este ...

CFReadStreamRef readStream; CFWriteStreamRef writeStream; CFStringRef host = CFSTR("74.125.224.72"); UInt32 port = 2270; CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, host, port, &inputStream, &writeStream); if (writeStream && inputStream) { inputStream = (__bridge NSInputStream *)readStream; [inputStream setDelegate:self]; [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [inputStream open]; outputStream = (__bridge NSOutputStream *)writeStream; [outputStream setDelegate:self]; [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [outputStream open]; }

Incluso después de abrir tanto la callback(stream:(NSStream *)theStream handleEvent:) flujo callback(stream:(NSStream *)theStream handleEvent:) no se llama con NSStreamEventOpenCompleted para ambos flujos. ¿Puede alguien ayudarme? ¿Qué estoy haciendo mal aquí? O ¿Cuáles son las posibilidades que no se llamará a NSStreamEventOpenCompleted He visto en la documentación, si la apertura falló, no llamará a esto, si es así, ¿por qué falla la apertura de flujos? ¿Alguna idea?

gracias por tu ayuda.


Lo uso con un código muy similar y funciona bien para mí. Pruebe el siguiente código.

NSString* host = @"192.168.2.105"; CFReadStreamRef readStream; CFWriteStreamRef writeStream; UInt32 port = 8008; CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (__bridge CFStringRef)(host), port, &readStream, &writeStream); if (writeStream && readStream) { self.InputStream = (__bridge NSInputStream *)readStream; [self.InputStream setDelegate:self]; [self.InputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [self.InputStream open]; self.OutputStream = (__bridge NSOutputStream *)writeStream; [self.OutputStream setDelegate:self]; [self.OutputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [self.OutputStream open]; }

Si no funciona para usted, puedo enviarle una pequeña aplicación que implementa el cliente y el servidor TCP, por ejemplo.