問題タブ [nsoutputstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1097 参照

cocoa-touch - Cocoaのストリームクラスはシークをサポートしていますか?

メモリストリームからの読み取りと書き込みが可能で、シークをサポートするCocoaクラスが必要です。C#ではMemoryStream、メソッドをサポートしseek、JavaではByteArrayInputStream、メソッドmark、、、skipおよびをサポートしますreset

iOS開発では、同等のクラスとメソッドは何ですか?

プロジェクトに上記の機能が必要ですが、デフォルトでiOSフレームワークでサポートされていない場合、独自の機能を実装するための最良の方法は何でしょうか。たとえば、NSInputStream/から継承する独自のストリームサブクラスを記述しNSOutputStreamます。これには、内部でカスタムコードが含まれますか?

0 投票する
1 に答える
141 参照

ipad - 出力ストリームを使用して、または効率的な方法でデータをファイルに保存するにはどうすればよいですか?

私は自分のアプリケーションでアプリの購入を実装しましたが、ストアからダウンロードする必要のあるコンテンツが大きくなります。最近は、接続から受信したデータを保存するために辞書を使用しています:didReceiveDataそして最後に辞書データをストアに保存しますダウンロードするデータが少ない場合に適したファイルに変換します。

データ全体を辞書に保存しているため、ダウンロードする製品が重いとメモリの問題に直面します。メカニズムを検索したときに、受信したデータの一部を保存できるoutputStreamsを使用することを提案する人々に出くわしました。実行時のファイル。

誰かがそれを実装する方法の例の実装で私を助けることができますか?

他のメカニズムもありがたいです。

ありがとうございました

0 投票する
1 に答える
769 参照

objective-c - バックグラウンド スレッドの NSInputStream が NSStreamEventHasBytesAvailable を呼び出さない

アプリケーションのストリーミング部分に取り組んでいます。NSinputstream と NSOutputstream を使用するバックグラウンド スレッドにストリーミング プロセスを配置する必要がありました。次に、同じスレッドのこのストリーミング チャネルを介して http コマンドを送信します。NSStreamEventOpenCompleted と NSStreamEventHasSpaceAvailable を受け取り、サーバー側で http リクエストも受け取りますが、 EVENT HAS BYTES AVAILABLE は発生しません。そして、私は応答を受け取ることができません...私は何が問題なのか分かりません。ここに私のコードの一部があります:

私が使用しているスレッド:

0 投票する
1 に答える
934 参照

ios - NSOutputStreamを使用してソケット経由でサーバーに送信する場合、データ(JSON)を改行で区切ります

アプリがJSONをサーバーに送信し、JSONを送り返すTCPプロトコルを作成しています。各送信を改行で区切るようにしています。これはサーバー側では問題ありませんが、各NSOutputStream書き込みに改行を追加するにはどうすればよいですか?

ストリームは正しく設定されており、データの送信に使用しているコードは次のとおりです。

その最後に改行()を追加するにはどうすればよいですか\n、確かに方法はありますか?

0 投票する
1 に答える
338 参照

objective-c - 複数のストリーム、1 つのファイル?

複数の NSOutputStreams (それぞれが別のスレッドにある) を使用して、ファイルをディスクに書き込みたいと思います。スレッドの問題を処理する方法は知っていますが、異なるバイト範囲を単一のファイルに同時に書き込むために何を使用すればよいかわかりません。

たとえば、書き込みプロセスが完了すると、ターゲット ファイルがディスク上で 100 MB になるとします。ターゲット ファイルに 25MB を書き込みたい 4 つのストリーム (s0、s1、s2、および s3 と呼びます) を持つ 4 つのスレッドがあります。各ストリーム (s0-3) がそれぞれのターゲット バイト範囲に同時に書き込みできるようにしたい (たとえば、s0 は 0MB から 25MB まで、s1 は 25MB から 50MB までなど)。各ストリームは独立しているため、どのストリームがいつバイトを受信するかがわかります。

ありがとう。

0 投票する
2 に答える
4557 参照

cocoa - NSOutputStream を使用して URL に POST する

したがって、私がやりたいことは、POST リクエストを URL に送信することだけです。今、私は NSURLRequest/NSURLConnection を使用してみましたが、それに問題があり、大きなファイルを送信したいので、ストリームを直接処理する方がよいと考えたため、下位レベルに移動することにしました。しかし、出力ストリーム デリゲートは呼び出されていないようで、NSOutputStream のinitWithURL.

私のURLは有効なURLであるため、理解できません。端末からpingを実行して、他のソースからデータを送信できます。私は何か間違ったことをしていますか、またはストリームを使用して URL に POST 要求を書き込む方法を教えてもらえますか? ありがとう。

0 投票する
0 に答える
613 参照

iphone - NSOutputStream にデータを書き込めません

NSOuptutStream の書き込みメソッドを使用して、サーバーからクライアントに大きなサイズの画像を送信しようとしています。ただし、684032 バイトを書き込んだ後、ストリームによってバイトが書き込まれなくなっていることがわかりました。これは特に奇妙だと思います。サイズ < 680432 の画像を送信し、クライアント側で適切に受信できます。以下にコード スニペットを添付します。誰かが私が間違っているところを正確に指摘できれば素晴らしいことです。

私のコードがハングしたとき、これは私が残した出力です

...
2012-07-04 13:53:20.903 BasicClientServer[1707:f803] self.bufferoffset 681984 self.bufferlimit 1334301
2012-07-04 13:53:20.903 BasicClientServer[1707:f803] サーバー: バイト数 1024
2012- 07-04 13:53:20.904 BasicClientServer[1707:f803] self.bufferoffset 683008 self.bufferlimit 1334301
2012-07-04 13:53:20.905 BasicClientServer[1707:f803] サーバー: 1024
2012-07-04 13 を受け取ったバイト: 53:20.906 BasicClientServer[1707:f803] self.bufferoffset 684032 self.bufferlimit 1334301

そして、この点を超えません

0 投票する
3 に答える
914 参照

objective-c - NSOutputStreamのサブクラスを作成する方法

NSOutputStreamのサブクラスを作成して、非常に単純な関数を実行しようとしています。ストリームに送信されたバイトの総数を追跡します。ただし、関数のインスタンスを初期化するときに予期しない問題が発生しています。コードは次のとおりです。

ただし、このクラスを初期化しようとすると、次のようになります。

次のエラーが発生します。

superを呼び出すクラスに明示的なコンストラクターを追加しようとしましたが、違いはありません(そうではないはずです)。

0 投票する
1 に答える
1921 参照

ios - アプリがバックグラウンドになったら NSStreams を閉じる

私はObjective Cとiosの開発が初めてです。私は通常、Android アプリを Java でプログラミングし、常に onPause 呼び出しを使用してソケットを閉じました。しかし、applicationWillResignActive の下でクローズ ソケット メソッドを呼び出すと、ストリーム リスナーとの通信が失われ、入力ストリームと出力ストリームを閉じることができません。実際、アプリがサーバーに接続されていても、両方のストリームのストリーム ステータスに NSStreamStatusNotOpen または 0 が表示されます。何か案は?

ありがとうございました

編集

SocketHandler.m クラスの Connect メソッド:

0 投票する
1 に答える
1726 参照

ios - NSOutputStream がデータを正しく書き込んでいない

NSStreamEventHasSpace 利用可能なイベントを使用して、単純な NSString を NSOutputStream に書き込もうとしています。そのイベントの内容は次のとおりです。

私はほとんどAppleからそれを持ってきました。データはviewDidLoadメソッドで初期化されます

HasSpaceAvailable イベントが 2 回呼び出されます。最初のものでは、メッセージ全体が文字「N」で書かれています。それに追加されます。2 回目に、NSLog は空白のメッセージが書き込まれた (null ではない) ことを報告します。その後、EndEncountered イベントが発生します。その場合、私は

これもAppleから入手しました。しかし、「メモリにデータが書き込まれていません!」が記録されます。いつでもエラーは発生せず、相手側でデータが受信されたようには見えません。