Cocoa NSOutputStream enviar para uma conexão

Eu sou novo no Cocoa, mas consegui instalar e executar uma conexão (para um FTP), e configurei um manipulador de eventos para o NSInputStream iStream para alertar todas as respostas (o que também funciona).

O que eu consigo obter é simplesmente a mensagem hello e um tempo limite de conexão de 60 segundos, fechando a conexão de controle.

Edição: Eu acho que minha pergunta é "sem fechar-> abrir o que seria uma maneira não-final de liberar o outputStream?

Após pesquisar o fluxo de pilha e encontrar muitos problemas de gravação no NSOutputStream (por exemplo,Como usar a mensagem de gravação do NSOutputStream?) e muita confusão nos meus hits do google, achei que tentaria fazer minha própria pergunta:

Tentei ler o documento developer.apple.com no OutputStream, mas parece quase impossível para mim enviar alguns dados (neste caso, apenas uma string) para a "conexão" via 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;
}

o exposto acima parece não resultar em eventos úteis. digitar em NSStreamEventHasSpaceAvailable às vezes dá uma resposta se eu enviar spam ao ftp, criando novas instâncias de conexão e enviando algum comando sempre que o oStream tiver espaço livre. Em outras palavras, nada "certo" e, portanto, ainda não estou claro como enviar um comando corretamente para a conexão. Devo abrir -> escrever -> fechar sempre que quiser gravar no oStream (e, portanto, no ftp) e posso esperar uma resposta (evento hasBytesAvailable no iStream)? EDIT: Não parece que não.

Por alguma razão, acho muito difícil encontrar tutoriais claros sobre esse assunto. Parece que existem mais do que alguns na mesma posição que eu: não está claro como usar a gravação oStream?

Por favor! Qualquer coisa que possa ajudar a esclarecer isso é muito apreciada!

Se necessário, posso escrever o restante do código.

Mandril

questionAnswers(1)

yourAnswerToTheQuestion