1

私はココアは初めてですが、プログラミングは初めてです。最近、私は 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 も含まれており、ここと Google で検索できる限り、NSStream は SSL 接続に「切り替える」ことができます。

接続が行われているのを見ることができませんでしたが (通常はできます)、ストリームが開く前にストリームに書き込む必要があることについても聞いたことがありますか?

私の質問が煩わしい場合は申し訳ありません-私はCocoaが初めてです:)

4

2 に答える 2

1

だから私が Cocoa の初心者だと言ったとき、私はそのすべての言葉を意味していました. 結局、上記のコードが機能したことがわかりました。接続が次の行で行われると予想していたので、それを見ることができませんでした。しかし、デバッグ目的で下部に追加した NSRunAlert の後まで作成されませんでした。

混乱しているというよりは、恥ずかしい思いをしているのかどうかわかりません。

于 2010-04-05T16:30:33.190 に答える
0

handleEvent デリゲート メソッドを実装し、Input および Output ストリーム オブジェクトに何が起こっているかを監視する必要があります。ドキュメントを参照してください。そこで説明されています。

- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent
于 2010-04-13T17:49:25.350 に答える