Question

Je suis nouveau à Cocoa, mais a réussi à obtenir une connexion (à un FTP) et en cours d'exécution, et je l'ai mis en place un eventhandler pour le nsInputStream iStream d'alerter toutes les réponses (qui fonctionne aussi).

Ce que je parviens à obtenir est tout simplement le message bonjour et un délai d'attente de connexion 60 sec, fermeture connexion de contrôle.

EDIT: Je suppose que ma question est « sans closing-> ouvrir ce serait un moyen non-terminaison de rinçage du outputStream

?

Après la recherche stackoverflow et trouver beaucoup de NSOutputStream problèmes d'écriture (par exemple Comment utiliser NSOutputStream de écrire un message ) et beaucoup de confusion dans ma frappe Google, je me suis dit que je vais essayer de poser ma question:

J'ai essayé de lire la doc sur developer.apple.com OutputStream, mais il me semble presque impossible d'envoyer des données (dans ce cas, juste une chaîne) à la « connexion » via le NSOutputStream ostream.

- (IBAction) send_something: sender
{
const char *send_command_char = [@"USER foo" UTF8String];
send_command_buffer = [NSMutableData dataWithBytes:send_command_char length:strlen(send_command_char) + 1];
uint8_t *readBytes = (uint8_t *)[send_command_buffer mutableBytes];
NSInteger byteIndex = 0;
readBytes += byteIndex;
int data_len = [send_command_buffer length];
unsigned int len = ((data_len - byteIndex >= 1024) ?
                    1024 : (data_len-byteIndex));
uint8_t buf[len];
(void)memcpy(buf, readBytes, len);
len = [oStream write:(const uint8_t *)buf maxLength:len];
byteIndex += len;
}

ce qui précède semble ne pas aboutir à des événements utilisables. taper sous NSStreamEventHasSpaceAvailable donnent parfois une réponse si je le ftp anti-spam par keep création de nouvelles instances de connexion et de continuer à envoyer une commande à chaque fois que ostream possède un espace libre. En d'autres termes, rien « droit » et donc je ne suis toujours pas clair comment envoyer correctement une commande à la connexion. Dois-je ouvrir -> write -> fermer chaque fois que je veux écrire ostream (et donc au ftp) et puis-je puis attendre une réponse (événement hasBytesAvailable sur iStream)? EDIT: Ne ressemble pas à elle pas

.

Pour une raison quelconque, je trouve qu'il est très difficile de trouver des tutoriels clairs sur cette question. On dirait qu'il ya plus que quelques dans la même position que moi: ne sait pas comment utiliser ostream écriture

S'il vous plaît! Tout peu qui peut aider à éclaircir c'est grandement apprécié!

Si besoin, je peux écrire le reste du code.

  • Chuck
Était-ce utile?

La solution

Ok, donc 10 heures 28 vues et pas de réponses / commentaires, mais c'est OK, parce que je viens de résoudre avec une bonne aide d'un très très sympathique codeur irssi (pas cul léchant prévu;))

.

Il a proposé que j'ai essayé de std :: endl'e il (newline + rinçage), et donc j'ai essayé simplement ajouter la nouvelle ligne char (\ n, 0x0A) et cela a fonctionné parfaitement!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top