0

iPhoneでFTPS(FTP over SSL)を作成する方法がわかりません。次のコードを使用したい

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 に答える