FTPS-клиент для iPhone

Я понятия не имею, как сделать FTPS (FTP через SSL) на iPhone. Я хотел бы использовать следующий код

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 ответа

На iPhone нет встроенных возможностей FTPS, см. http://developer.apple.com/iphone/library/technotes/tn2009/tn2152.html

Вы должны создать свою собственную библиотеку FTPS. Я также не знаю какой-либо сторонней библиотеки FTPS для iPhone - но в статье выше дается обзор и стратегии, какие возможности для передачи файлов доступны.

Вы должны проверить этот пример, взят из библиотеки разработчиков iOS, он называется SimpleFTPSample, описание которого гласит:

SimpleFTPSample показывает, как выполнять простые операции FTP с помощью API-интерфейсов NSURLConnection и CFFTPStream. Он может загрузить файл, используя NSURLConnection и CFFTPStream. Кроме того, он может загрузить файл, составить список каталогов и создать каталог с помощью CFFTPStream.

Надеюсь, это поможет вам.

Вышеприведенные ответы верны: вы должны сделать это самостоятельно, приобретя его у Chilkat Software.

Другие вопросы по тегам