Cocoa NSOutputStream enviar a una conexión

Soy nuevo en Cocoa, pero logré poner en funcionamiento una conexión (a un FTP), y he configurado un controlador de eventos para el NSInputStream iStream para alertar cada respuesta (que también funciona).

Lo que logro obtener es simplemente el mensaje de saludo y un tiempo de espera de conexión de 60 segundos, cerrando la conexión de control.

EDITAR: Supongo que mi pregunta es "sin cerrar-> abrir, ¿cuál sería una forma sin fin de vaciar el outputStream?

Después de buscar stackoverflow y encontrar muchos problemas de escritura de NSOutputStream (p. Ej.¿Cómo usar el mensaje de escritura de NSOutputStream?) y mucha confusión en mis éxitos de Google, pensé que trataría de hacer mi propia pregunta:

Intenté leer el documento developer.apple.com en OutputStream, pero me parece casi imposible enviar algunos datos (en este caso solo una cadena) a la "conexión" a través de 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;
}

lo anterior parece no dar lugar a eventos utilizables. escribiéndolo bajo NSStreamEventHasSpaceAvailable a veces da una respuesta si envío spam al ftp al seguir creando nuevas instancias de conexión y sigo enviando algún comando cada vez que oStream tiene espacio libre. En otras palabras, nada "correcto" y, por lo tanto, todavía no estoy claro cómo enviar correctamente un comando a la conexión. ¿Debo abrir -> escribir -> cerrar cada vez que quiero escribir en oStream (y, por lo tanto, en el ftp) y puedo esperar una respuesta (evento hasBytesAvailable en iStream)? EDITAR: No parece que no.

Por alguna razón, me resulta muy difícil encontrar tutoriales claros sobre este asunto. Parece que hay más de unos pocos en la misma posición que yo: ¿no está claro cómo usar oStream write?

¡Por favor! ¡Cualquier pequeño detalle que pueda ayudar a aclarar esto es muy apreciado!

Si es necesario, puedo escribir el resto del código.

Arrojar

Respuestas a la pregunta(1)

Su respuesta a la pregunta