我是 Cocoa 的新手,但不是编程新手。最近我决定要为 Mac 编写一个 FTP 客户端,所以我首先用我最熟悉的语言(在 Windows 上)编写它,然后当我的 FTP 通信工作失败时转向 Cocoa。
我的问题(显然)有点争议:如何建立到(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,而且据我在这里和谷歌上搜索到的,NSStream 能够“切换”到 SSL 连接。
我无法看到正在建立的连接(我通常能够做到),但我也听说过必须在流打开之前写入流?
任何指针都非常感谢,如果我的问题很烦人,我很抱歉 - 我是 Cocoa 的新手 :)