Cacao NSOutputStream inviare a una connessione
-
24-09-2019 - |
Domanda
Sono nuovo di cacao, ma è riuscito a ottenere una connessione (ad un FTP) installato e funzionante, e ho impostato un EventHandler per la NSInputStream iStream per avvisare ogni risposta (che funziona anche).
Quello che riesco a ottenere è semplicemente il messaggio ciao e un timeout di connessione 60 sec, la chiusura della connessione di controllo.
EDIT:? Credo che la mia domanda è "senza chiusura-> apertura quello che sarebbe un modo non fatale del lavaggio del outputStream
Dopo la ricerca StackOverflow e trovare un sacco di problemi di scrittura NSOutputStream (ad esempio Come usare NSOutputStream di ? messaggio di scrittura ) e un sacco di confusione nei miei colpi google, ho pensato che mi piacerebbe provare a chiedere la mia domanda:
Ho provato a leggere il doc developer.apple.com su OutputStream, ma sembra quasi impossibile per me di inviare alcuni dati (in questo caso solo una stringa) per la "connessione" tramite il 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;
}
quanto sopra non sembra dar luogo a tutti gli eventi utilizzabili. digitando sotto NSStreamEventHasSpaceAvailable a volte dare una risposta se lo spam del ftp da continuare a creare nuove istanze di connessione e di continuare a inviare un comando ogni volta ostream ha spazio libero. In altre parole, niente di "destra" e quindi sono ancora chiaro come inviare correttamente un comando alla connessione. Dovrei aprire -> scrittura -> vicino ogni volta che voglio scrivere a ostream (e quindi al ftp) e posso quindi aspettare una risposta (evento hasBytesAvailable su iStream)? EDIT:. Non sembra che nessun
Per qualche motivo trovo molto difficile trovare alcun tutorial chiare in materia. Sembra che ci sono più di un paio nella stessa posizione come me: chiaro come utilizzare ostream scrittura
! Ogni po 'che può aiutare a chiarire la situazione è molto apprezzato!
Se necessario posso scrivere il resto del codice.
- Chuck
Soluzione
Ok, quindi 10 ore 28 vista e nessuna risposta / commenti, ma va bene così, perché ho appena risolto con qualche buon aiuto da un molto, molto cordiale irssi coder (senza leccare culo destinato;)).
Ha proposto che ho cercato di std :: endl'e esso (a capo + a filo), e così ho provato semplicemente aggiungendo il carattere nuova riga (\ n, 0x0A) e ha funzionato perfettamente!