質問

私は 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書き込みの使用方法が不明ですか?

お願いします!この問題を解決するのに役立つ少しでも大歓迎です。

必要に応じて、コードの残りの部分を記述します。

  • チャック
役に立ちましたか?

解決

わかりましたので、10時間28ビュー無回答/コメントは、それのOK、私は非常に非常に友好のirssiコーダ(何のお尻をなめるが意図していない。)からいくつかの良いの助けを借りて、それを解決しているため。)

彼提案私ははstd ::しようとしたことを(改行+フラッシュ)それをendl'e、と私は単純に改行文字を追加してみました(\ nは、は0x0A)と、それは完全に働いた!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top