2010-04-05 4 views
0

Я новичок в Cocoa, но не для программирования. Недавно я решил написать FTP-клиент для Mac, и поэтому впервые сделал это на том языке, который мне больше всего нравится (в Windows), а затем перешел к Cocoa, когда у меня была работа FTP-связи.Cocoa NSStream TCP-соединение с FTP

Мой вопрос (по-видимому) несколько противоречивый: как установить соединение для чтения/записи (ftp-сервера)?

То, что я до сих пор (не работает, очевидно):

NSInputStream *iStream; 
NSOutputStream *oStream; 
NSHost *host = [NSHost hostWithAddress:@"127.0.0.1"]; 
[NSStream getStreamsToHost:host port:3333 inputStream:&iStream outputStream:&oStream]; 
// ftp port: 3333 
[iStream retain]; 
[oStream retain]; 
[iStream scheduleInRunLoop:[NSRunLoop currentRunLoop] 
      forMode:NSDefaultRunLoopMode]; 
[oStream scheduleInRunLoop:[NSRunLoop currentRunLoop] 
      forMode:NSDefaultRunLoopMode]; 
[iStream setDelegate:self]; 
[oStream setDelegate:self]; // which is not implemented apparently 
[iStream open]; 
[oStream open]; 
// .... [iStream write: (const uint8_t *)buf maxLength:8]; 

, который частично основан на http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/Streams/Articles/NetworkStreams.html Теперь, почему я выбрал NSStream? Поскольку в то время как этот вопрос касается только того, как подключиться к потоку FTP, весь мой проект будет включать в себя SSL, и, насколько я мог искать здесь и в Google, NSStream способен «переключиться» на SSL-соединение.

Я не смог увидеть, как создается соединение (что я обычно делаю), но я также слышал что-то о необходимости писать в поток до того, как поток откроется?

Все указатели очень ценятся, и извините, если мой вопрос раздражает - я новичок в какао :)

ответ

2

Так что, когда я сказал, что я новичок в какао я имел в виду каждое слово. Оказалось, что код выше работал в конце концов, я просто не смог его увидеть, потому что ожидал, что соединение будет выполнено в этой строке: [NSStream getStreamsToHost: хост-порт: 3333 inputStream: & iStream outputStream: & oStream]; , но это было сделано только после того, как NSRunAlert я добавил в нижней части для отладки.

Я не уверен, что я более унижен, чем я в замешательстве.

0

Вам нужно реализовать метод делегирования handleEvent и посмотреть, что происходит с вашими объектами потока ввода и вывода ... Взгляните на документы, это объясняется там!

- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent 

 Смежные вопросы

  • Нет связанных вопросов^_^