Pergunta

Sou novo no Cocoa, mas consegui obter uma conexão (para um FTP) em funcionamento, e configurei um EventHandler para o NSInputStream IsTream para alertar todas as respostas (que também funcionam).

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

EDIT: Acho que minha pergunta é "sem fechar-> Abrindo qual seria uma maneira não terminante de lavar o outputStream?

Depois de pesquisar o StackOverflow e encontrar muitos problemas de gravação do NSOUTPUTTREAM (por exemplo, Como usar a mensagem de gravação do NSOutputStream?) E muita confusão nos meus hits do Google, imaginei que tentaria fazer minha própria pergunta:

Eu tentei ler o documento do desenvolvedor.apple.com no OutputStream, mas parece quase impossível para mim enviar alguns dados (neste caso apenas uma string) para a "conexão" através do 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 utilizáveis. Digitá -lo sob NSStreamEventhasspaceAvilable, às vezes, dê uma resposta se eu enviar spam o FTP, continue criando novas instâncias de conexão e continue 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 adequadamente para a conexão. Devo abrir -> escrever -> Fechar toda vez que quero escrever para o Ostream (e, portanto, para o FTP) e posso esperar uma resposta (evento Hasbytesavailable no iStream)? EDIT: Não parece 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 o Ostream Write?

Por favor! Qualquer pouquinho que possa ajudar a esclarecer isso é muito apreciado!

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

  • Mandril
Foi útil?

Solução

Ok, então 10 horas 28 visualizações e sem respostas/comentários, mas tudo bem, porque acabei de resolver isso com uma boa ajuda de um codificador IRSSI muito amigável (sem lamber de bunda pretendida;)).

Ele propôs que eu tentei Std :: Endl'e It (newline + Flush) e, por isso, tentei simplesmente adicionar o char nova ( n, 0x0a) e funcionou perfeitamente!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top