J'ai écrit un programme qui se connecte à un serveur sur une IP donnée en utilisant le protocole NSStream décrit dans le guide de programmation stream d'Apple. La connexion et le transfert de données fonctionnent parfaitement, mais si l'utilisateur spécifie une mauvaise adresse IP et que le programme tente d'ouvrir les flux, le programme ne répond plus.
D'après ce que j'ai lu, la méthode handleEvent détecte les erreurs de flux, mais lorsque je vérifie la condition eventCode == NSStreamEventErrorOccurred, rien ne semble se produire. Mon code de connexion est le suivant :
NSString *hostString = ipField.text;
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)hostString, 10001, &readStream, &writeStream);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
Comment puis-je spécifier un délai d'attente ou permettre à un bouton de déclencher la fermeture des flux si une connexion ne peut être établie ?