Lecture d'un flux NSInputStream
skimpy
Membre
Bonjour,
J'avais posté un message il y a 1 semaine concernant un problème sur NSInputStream et hasBytesAvailable (qui retournait toujours NO). Je pensais que c'était dû à mes threads qui communiquaient mal entre eux. Ne trouvant pas la solution, j'ai donc décidé de recommencer avec une toute petite application, qui envoie simplement une commande LIST à un serveur de news. Malheureusement, j'ai toujours le même problème ! hasBytesAvailable renvoie NO alors que le delegate NSStreamEventHasBytesAvailable dit qu'il a bien des données à lire !
Je mets en attachement l'application pour les personnes qui auraient la générosité de m'aider à trouver ce qui ne va pas dans mon code.
Merci.
Pour que ça fonctionne, il faut juste remplacer dans le fichier AppController.m, méthode init, le serveur de news que vous avez (pour moi, c'est wanadoo, le port standard est 119 et 1 correspond au nombre de connexion possible sur le serveur, mais pour le moment, je ne l'utilise pas ; je me contente d'essayer de le faire fonctionner avec le strict minimum !)
[Fichier joint supprimé par l'administrateur]
J'avais posté un message il y a 1 semaine concernant un problème sur NSInputStream et hasBytesAvailable (qui retournait toujours NO). Je pensais que c'était dû à mes threads qui communiquaient mal entre eux. Ne trouvant pas la solution, j'ai donc décidé de recommencer avec une toute petite application, qui envoie simplement une commande LIST à un serveur de news. Malheureusement, j'ai toujours le même problème ! hasBytesAvailable renvoie NO alors que le delegate NSStreamEventHasBytesAvailable dit qu'il a bien des données à lire !
Je mets en attachement l'application pour les personnes qui auraient la générosité de m'aider à trouver ce qui ne va pas dans mon code.
Merci.
Pour que ça fonctionne, il faut juste remplacer dans le fichier AppController.m, méthode init, le serveur de news que vous avez (pour moi, c'est wanadoo, le port standard est 119 et 1 correspond au nombre de connexion possible sur le serveur, mais pour le moment, je ne l'utilise pas ; je me contente d'essayer de le faire fonctionner avec le strict minimum !)
[Fichier joint supprimé par l'administrateur]
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Voilà ce que j'ai constaté :
Quand le buffer dans lequel on fait un read n'est pas rempli, hasBytesAvailable retourne 0, sinon 1.
Je m'explique :
donc si bytesRead vaut 1024, hasBytesAvailable retourne 1, sinon 0. Voici le résultat de mon NSLog :
Et la doc d'Apple spécifie bien :
QU'en pensez-vous ?