0

我不知道如何在 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。

知道我做错了什么。

4

3 回答 3

2

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

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

于 2010-01-06T13:08:09.723 回答
0

你应该检查这个例子,它来自 iOS 开发者库,它被称为SimpleFTPSample描述说:

SimpleFTPSample 展示了如何使用 NSURLConnection 和 CFFTPStream API 进行简单的 FTP 操作。它可以使用 NSURLConnection 和 CFFTPStream 下载文件。此外,它还可以使用 CFFTPStream 上传文件、列出目录和创建目录。

希望这对您有所帮助。

于 2011-11-05T17:50:31.860 回答
-2

上述答案是正确的:您必须自己完成,我们从Chilkat Software购买。

于 2015-08-13T14:40:45.303 回答