私はCocoaを初めて使用しますが、(FTPへの)接続を確立して実行することができ、NSInputStream iStreamのイベントハンドラーを設定して、すべての応答を警告します(これも機能します)。
私が何とか取得したのは、単にhelloメッセージと60秒の接続タイムアウトで、制御接続を閉じています。
編集:私の質問は「閉じる->開くことなく、outputStreamをフラッシュする非終了の方法は何でしょうか?」だと思います。
stackoverflowを検索し、NSOutputStreamの書き込みの問題(NSOutputStreamの書き込みメッセージの使用方法など)とGoogleのヒットで多くの混乱を見つけた後、私は自分自身の質問をしようと思った。
OutputStreamでdeveloper.apple.comのドキュメントを読んでみましたが、NSOutputStream oStreamを介して「接続」にデータ(この場合は文字列)を送信することはほとんど不可能のようです。
- (IBAction) send_something: sender
{
const char *send_command_char = [@"USER foo" UTF8String];
send_command_buffer = [NSMutableData dataWithBytes:send_command_char length:strlen(send_command_char) + 1];
uint8_t *readBytes = (uint8_t *)[send_command_buffer mutableBytes];
NSInteger byteIndex = 0;
readBytes += byteIndex;
int data_len = [send_command_buffer length];
unsigned int len = ((data_len - byteIndex >= 1024) ?
1024 : (data_len-byteIndex));
uint8_t buf[len];
(void)memcpy(buf, readBytes, len);
len = [oStream write:(const uint8_t *)buf maxLength:len];
byteIndex += len;
}
上記は、使用可能なイベントにはならないようです。NSStreamEventHasSpaceAvailableで入力すると、新しい接続インスタンスを作成し続け、oStreamに空き領域がある場合は常にコマンドを送信し続けることで、ftpをスパムした場合に応答が返されることがあります。言い換えれば、「正しい」ものは何もないので、接続にコマンドを適切に送信する方法がまだわかりません。oStream(したがってftp)に書き込むたびに、開く->書き込む->閉じる必要があります。その後、応答(iStreamのhasBytesAvailableイベント)を期待できますか?編集:それはないようには見えません。
何らかの理由で、この問題に関する明確なチュートリアルを見つけるのは非常に難しいと思います。私と同じ立場にいる人は少なくないようです。oStream書き込みの使い方がわかりませんか?
お願いします!これをクリアするのに役立つ少しでも大歓迎です!
必要に応じて、残りのコードを書くことができます。
- チャック