[Résolu] - NSOperation, NSStream et Delegate
skimpy
Membre
Edit: Le problème était en fait entre la chaise et le clavier. Une de mes fonctions ne prenait pas en compte un cas particulier (ou plutôt paramétrait une variable à une mauvaise valeur) ; ça empêchait du coup la lecture du buffer.
Bonjour,
J'essaie d'écrire un programme qui se connecte à un serveur distant dans le but de récupérer un fichier "segmenté" ; la finalité étant de recomposer le fichier une fois les segments récupérés.
Pour cela, j'ai créé une NSOperation (synchrone, avec une méthode main) dans laquelle j'effectue les tâches suivantes :
- J'instancie 4 objets de ma classe Network. Cette classe contient un NSInputStream et un NSOutputStream et implémente le protocole NSStreamDelegate.
- J'effectue mon setDelegate
- J'ajoute les flux dans la runLoop (scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode])
- J'ouvre les flux
- Jusque là , ça fonctionne, le serveur me répond OK sur les 4 flux ouverts.
- J'envoie ensuite sur chaque flux, la demande de récupération d'un segment : donc le flux1 demande le segment1, le flux2, le segment2, etc.
- Là encore le serveur me répond OK
- Et puis après c'est aléatoire ... je reçois 1 segment sur 4, ou 0 sur 4 ou 3 sur 4 ... c'est la loterie (tiens y'a l'EuroMillions d'ailleurs ce soir /smile.png' class='bbc_emoticon' alt=':)' /> )
Auriez-vous une idée d'où peut provenir mon problème ou comment faire pour debugger cette partie ?
Merci
Bonjour,
J'essaie d'écrire un programme qui se connecte à un serveur distant dans le but de récupérer un fichier "segmenté" ; la finalité étant de recomposer le fichier une fois les segments récupérés.
Pour cela, j'ai créé une NSOperation (synchrone, avec une méthode main) dans laquelle j'effectue les tâches suivantes :
- J'instancie 4 objets de ma classe Network. Cette classe contient un NSInputStream et un NSOutputStream et implémente le protocole NSStreamDelegate.
- J'effectue mon setDelegate
- J'ajoute les flux dans la runLoop (scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode])
- J'ouvre les flux
- Jusque là , ça fonctionne, le serveur me répond OK sur les 4 flux ouverts.
- J'envoie ensuite sur chaque flux, la demande de récupération d'un segment : donc le flux1 demande le segment1, le flux2, le segment2, etc.
- Là encore le serveur me répond OK
- Et puis après c'est aléatoire ... je reçois 1 segment sur 4, ou 0 sur 4 ou 3 sur 4 ... c'est la loterie (tiens y'a l'EuroMillions d'ailleurs ce soir /smile.png' class='bbc_emoticon' alt=':)' /> )
Auriez-vous une idée d'où peut provenir mon problème ou comment faire pour debugger cette partie ?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses