iPhone FTPS客户端

时间:2009-12-14 06:57:39

标签: iphone ssl ftp ftps

我不知道如何在iPhone上制作FTPS(基于SSL的FTP)。我想使用以下代码

ftpStream = CFWriteStreamCreateWithFTPURL(NULL, (CFURLRef) url);
CFWriteStreamSetProperty(ftpStream, kCFStreamPropertyFTPUserName,username);
CFWriteStreamSetProperty(ftpStream, kCFStreamPropertyFTPPassword,password);

self.networkStream = (NSOutputStream *) ftpStream;      
[self.networkStream setProperty:NSStreamSocketSecurityLevelSSLv3 forKey:(id)NSStreamSocketSecurityLevelKey];

self.networkStream.delegate = self;
[self.networkStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.networkStream open];

...

- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
{
  NSLog(@"Hello\n");
}

此代码连接到服务器,但随后停止一起讨论。我也尝试使用以下方法设置安全级别

NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
    (NSString *)kCFStreamSocketSecurityLevelSSLv3, kCFStreamSSLLevel,
    kCFBooleanTrue, kCFStreamSSLAllowsAnyRoot,
    kCFBooleanFalse, kCFStreamSSLValidatesCertificateChain,
    hostName, kCFStreamSSLPeerName,
    kCFBooleanFalse, kCFStreamSSLIsServer,
    kCFBooleanFalse,kCFStreamSSLValidatesCertificateChain,
    kCFBooleanTrue, kCFStreamSSLAllowsExpiredCertificates,
    kCFBooleanTrue, kCFStreamSSLAllowsExpiredRoots,
    nil];
CFWriteStreamSetProperty(ftpStream, kCFStreamPropertySSLSettings, settings);

这允许我连接和传输数据,但不能通过SSL。

知道我做错了什么。

3 个答案:

答案 0 :(得分:2)

iPhone上没有内置的FTPS功能,请参阅:http://developer.apple.com/iphone/library/technotes/tn2009/tn2152.html

您必须构建自己的FTPS库。我也不知道iPhone的任何第三方FTPS库 - 但上面的文章提供了一些概述和策略可以提供传输文件的可能性。

答案 1 :(得分:0)

你应该查看这个例子,来自iOS Developer Library,它的名称为SimpleFTPSample,描述如下:

  

SimpleFTPSample显示了如何使用简单的FTP操作   NSURLConnection和CFFTPStream API。它可以使用下载文件   NSURLConnection和CFFTPStream。此外,它可以上传文件,列表   目录,并使用CFFTPStream创建目录。

希望这会对你有所帮助。

答案 2 :(得分:-2)

以上答案是正确的:您必须自己从Chilkat Software购买。