問題タブ [nsinputstream]

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

ios - NSInputStream と NSOutputStream の問題

ネットワーク経由で相互に接続されているデバイス間で2 つがNSInputStreamあります。NSOutputStreamに何かを書き込むと、イベントが発生するoutput streamまでデータが書き込まれ ます。NSStreamEventEndEncountered出力ストリームを閉じますが、反対側 ( input stream) ではNSStreamEventEndEncountered、 のビュー コントローラーを終了するまで、イベントは発生しませんoutput stream。1.で同じことが発生した後でも、 でイベントが発生
しないのはなぜですか? (このイベントでは、出力ストリームも閉じられます) 2. を一度開くと、データを書き込むことができるのは 1 回だけであると理解しています。イベント後に再度開くことはできません (たとえば、イベントに何か新しいものを書き込むため)。NSStreamEventEndEncounteredinput streamoutput stream
NSOutputStreamoutput streamNSStreamEventEndEncountered

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

ios - NSInputStream/NSOutputStream を介して複数の画像を転送する

私は2つ持っておりNSInputStreamNSOutputStreamネットワーク経由で互いに接続しています。コア データ オブジェクトと関連するイメージをあるデバイスから別のデバイスに転送したいと考えています。JSONコア データ オブジェクトをストリームの反対側に正常に変換して転送し、 JSON. これで、記録されたそれぞれに関連付けられた画像があります。画像はディスク上にあり、コアデータオブジェクトに保存されているパスのみがあります。に書き込むときは、完全なデータを手元に用意する必要がありますoutput stream。(をXML含むJSON) を用意しました。
1. しかし、どうすれば画像 ( ) を(また)NSData *と一緒に転送できますか? 読み取り側 ( ) で XML と画像を区別するにはどうすればよいですか?XMLNSData *NSInputStream
2. また、複数の画像を転送する必要がNSInputStreamあります。画像のバイトが終了し、次の画像のバイトが開始したことを最後にどのように伝えますか?
3. どの画像 (名前) が転送されたかをどのように知ることができますか?
ありがとう

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

ios - UTF-8でNSInputStreamを読み取る方法は?

NSInputStreamを使用してiOSで大きなファイルを読み取ろうとすると、ファイルの行が改行で区切られます(メモリを大量に使用するため、使用したくありませんcomponentsSeparatedByCharactersInSet)。

ただし、すべての行がUTF-8でエンコードされているわけではないため(ASCII、同じバイトとして表示される可能性があるため)、Incorrect NSStringEncoding value 0x0000 detected. Assuming NSASCIIStringEncoding. Will stop this compatiblity mapping behavior in the near future.警告が表示されることがよくあります。

私の質問は次のとおりです。たとえば、コンパイラフラグを設定することで、この警告を抑制する方法はありますか?

さらに:バイトストリームからの読み取りとして、2つのバッファー読み取りを追加/連結し、バッファーを文字列に変換してから文字列を追加すると、文字列が破損する可能性があるため、保存できますか?

以下のメソッド例では、バイトから文字列への変換で、UTF-8文字の前半と後半が無効として破棄されることを示しています。

出力:

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

ios - NSInputStream が実行を停止し、EXC_BAD_ACCESS をスローすることがあります

(更新)これは一言で言えば問題です: iOS では、大きなファイルを読み取り、その上で何らかの処理を行いたい (この特定のケースでは、Base64 string() としてエンコードし、デバイス上の一時ファイルに保存します。セットアップしますファイルから読み込む NSInputStream

私はほとんどの仕事をしています。何らかの理由で、NSInputStream が機能しなくなることがあります。線があるからわかる

の初めに(void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode、時には出力が表示されるだけです

(これはイベント NSStreamEventHasBytesAvailable に対応します)、その後は何もありません。NSStreamEventEndEncountered に対応するイベント 10 ではなく、エラー イベントでもありません。また、時にはデバッグ方法がわからない EXC_BAD_ACCESS 例外が発生することもあります。どんな助けでも大歓迎です。

これが実装です。「送信」ボタンを押すとすべてが開始され、トリガーされます。

sendData は次のとおりです。

上記で呼び出された setUpStreamsForInputFile は次のとおりです。

最後に、これはほとんどのロジックが発生する場所です。

注: これを最初に投稿したとき、この問題は GCD の使用に関係していると誤解していました。以下のRobの回答に従って、GCDコードを削除しましたが、問題は解決しません。

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

ios - バッファー転送に GCDAsyncSocket を使用しようとしています

(更新) 大きなファイル (ビデオまたは写真) を読み込んで、SOAP リクエスト経由でリモート サーバーに送信しようとしています。データを Base64 文字列としてエンコードする必要があります。私は次のようにこれをやろうとしています:

  • base64 でエンコードされたデータを「回避」する SOAP リクエスト用のテンプレート xml を作成します。

  • SOAP xml の最初の部分をバッファにプッシュする

  • ビデオ ファイルを開いてチャンクにエンコードし、エンコードされた各チャンクをバッファにプッシュします。

  • 最後に、SOAP xml の 2 番目の部分をプッシュします。

上記のようにパーツを「キューに入れる」ことができるようにするために、バッファリング機能を備えた GCDAsyncSocket を使用しようとしています。GCDAsyncSocket は TCP レベルで動作するため、HTTP POST ヘッダーを自分で記述する必要があると考えています。そのため、漠然としか理解していない可動部分が多くあり、すべて間違っている可能性があります。しかし、ソケットが離陸することさえないようで、デバッグする方法さえわかりません。これが私の関連するコードです。明らかなエラーを見つけるかどうかを確認してください。

ソケットは常に正常に接続されているようです。これは、このデリゲート メソッドを使用して確認できます。

setUpStreamsForInputFile メソッド (上記の最初のコード リストで呼び出されます):

ここで、前のメソッドの NSInputStream セットアップは、このデリゲートにイベントを送信します。

ソケットは、このデリゲートを使用してログに出力することになっています

しかし、これは一種のランダムに発生します。たとえば、最初の 2 つの if が呼び出される場合と呼び出されない場合があります。私がそうして、3番目の「if」(実際にエンコードされたデータを書き込んでいる場所)に到達すると、それは2〜3回しか書き込まれず、それだけです-ファイルのサイズを考えると、数が少なすぎると思います. SOAP xml の最後の部分を書き込む必要がある最後の「if」に到達することはありません。助けていただければ幸いです!前もって感謝します。

さらなる更新 (2013 年 3 月 19 日)

今日ソケットをテストすると、書き込みイベントがまったく発生しなくなりました。これは、ランダムであり、ひどく間違ったことをしていることを示しています。今日、接続は開きますが、次のデリゲート メソッドで確認できるように、ある時点でタイムアウトになります。

返す

socketDidDisconnect:withError: "Error Domain=NSPOSIXErrorDomain Code=60 "Operation timed out" UserInfo=0x1cd89b00 {NSLocalizedFailureReason=connect() 関数のエラー、NSLocalizedDescription=Operation timed out}"

上記のストリームデリゲートで Base64 データの書き込みをまだ実行している間。

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

objective-c - データを取得しているかどうかの NSSreamstatus

私は NSInputStream を持っています。他端からデータを取得しているかどうかを確認したいのですが、NSStreamStatus を読んで、「NSStreamStatusReading」を使用して読み取りデータを確認しています。

そのステータスを確認しようとしましたが、機能していません.データを取得しているかどうかを確認する方法を教えてください..コード:

}

送信時に機能しますが、サーバーを停止すると更新されません。

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

ios - ローカルファイルパスからデータの特定の部分をアップロードするための NSInputStream のサブクラス化

1 つのファイルに 100 MB のデータがあります。この 100 mb のデータは仮想的に分割されます。つまり、異なる 5MB チャンクを指す NSInputStream を作成する必要があります。これは、NSData でストリームを作成することで可能になります。

しかし、むしろ、ファイル内のデータの範囲を指す NSInputStream を持つことができるかどうか知りたいですか?

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

ios - NSInputStream - NSMutable データ追加を使用せずにデータを追加する

NSMutable データ追加を使用せずに NSInputStream にデータを追加したい。

それは可能ですか?

ガイドしてください