問題タブ [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 に答える
1294 参照

objective-c - AVCaptureMovieFileOutput で書き込み中に NSInputStream で .mov ファイルを読み取る

目的:AVCaptureMovieFileOutputビデオを .mov ファイルに記録するために使用します。ビデオの録画中に、S3 にアップロードしたいと考えています。アップロード部分は、マルチパート アップロードで実現可能である必要があります。(Mac OS X +10.8 アプリ)

問題AVCaptureMovieFileOutput: .mov ファイルが書き込まれ、サイズが大きくなっているときに、.mov ファイルからチャンクで読み取るにはどうすればよいですか?

私がこれまでにやったこと:

この時点stream:handleEvent:で、デリゲート オブジェクトでメッセージの受信を開始しますNSStreamEventHasBytesAvailable。しかし、数秒後にメッセージの受信が停止します (合計バイト数が 250.000 ~ 300.000 バイト (0.2MB) になった後)。これは、.mov ファイルのサイズが 10MB を超える場合でも発生します。

質問:

  1. NSInputStreamデリゲートがストリーム イベントを受信し続けないのはなぜですか?

  2. 最初に利用できるデータは信頼できないですか?

  3. これは全体的に実行可能なアプローチですか?または、私が望むものを達成する別の方法はありますか?

ありがとう!

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

ios - 解析: PFFile getDataStreamInBackgroundWithBlock を効率的に使用する方法

Parse のgetDataStreamInBackgroundWithBlock方法を使用して、大きなファイルをダウンロードしてローカルに保存しています。

ストリームを処理してデータをファイルに保存するにはどうすればよいですか? NSInputStreamこれは、デリゲート メソッド (hasBytesAvailableなど)を使用せずに可能ですか?

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

sockets - NSInputStream が TCP 接続から読み取れない [TCP-Server]

Apple によるこの (かなり古い) 例を使用して TCP サーバーを作成しました。私のサーバーは稼働しており、指定されたポートで着信接続をリッスンしています。

すべてが完璧に見えます。クライアント アプリはサーバーに接続でき、-stream:handleEvent:期待どおりに呼び出されます。

しかし、ストリームに書き込むと、サーバーは接続を拒否します。クライアントは、30 バイトが正常に書き込まれたと言います。

しかし、私のログは言う:

クライアント側では、次のコードを使用して接続を確立しています。

サーバー側では、これによりソケットが作成されます (CFSocketCallBack が提供されます)。

次に、コールバックでこれを使用してペアリングしています:

次に、ストリームを NSStreams にブリッジ キャストし、デリゲートを設定し、現在の実行ループでスケジュールして、それらを開きます。

なぜこれが起こるのかよくわからないので、ここではサーバー コード全体を提供しません。それは単に多すぎるでしょう。

特定のコードが必要な場合、またはそれがどこで発生したかを推測する場合は、それぞれのコードをここに投稿します。

アップデート

私は今、自分のコードで多くの調査を行いました。-stream:handleEventメソッドの呼び出しまで問題を追跡しました。

更新 2

TCP サーバーとクライアントに関するApple のすばらしい記事を読みました。すべての手順を実行しましたが、私のプログラムは Apple から提供されたコードとほとんど同じです。問題は残ります。

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

ios - iOS - ソケットを使用した NSInputStream: バックグラウンド スレッド

次のコードで作成された SocketCommunication クラスがあります

すべて正常に動作します。ただし、デリゲートは UI スレッドで呼び出されます。場合によっては、データの解析に時間がかかることがあります。

バックグラウンド スレッドでデリゲートを呼び出すように NSInputStream に指示するにはどうすればよいですか?

多分独自の NSRunLoop で?

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

objective-c - JSON ストリームのデシリアライズ中にエラーが発生しました

NSInputStream *inputStreamネットワーク接続から小さな JSON オブジェクトを受信して​​います。次のようにストリームをバッファに読み取った場合:

次に、期待する JSON を取得します。しかし、これは、読み取る JSON オブジェクトが 1 つだけあると想定しているため、非常に脆弱です。このスキームでは、 をデシリアライズしようとしてしまう可能性が{"cheese":17}{"chありますが、これは明らかに無効です。むしろ使いたい

しかし、デバッガーを使用して、この最後の行が返されず、エラーがログに記録されないことを発見しました! 正しいアプローチは何ですか?

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

ios - iOS - 入力ストリームのデリゲートを別のクラスに設定する

入力ストリームのデリゲートを別のクラスに設定できるかどうか疑問に思っています。これまでのところ、私が遭遇したすべての例は self: [inputStream setDelegate:self]です。ViewControllernot selfのような別のクラスにデリゲートを設定したい。前もって感謝します。

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

objective-c - NSOutputStream が書き込み後に不正アクセスでクラッシュする (Objective-c)

iOS アプリケーション用に基本的な TCP クライアントを起動して実行しようとしていますが、頭を働かせることができないように見えるブロックに遭遇しました。

これまでのところ、サーバー側で受信したメッセージを送信して接続できますが、アプリがクラッシュします。

Client.h

Client.m

コンソールの出力は

メッセージが送信され、ストリーム イベント #4 を受信した後、不正なアクセス クラッシュが発生したようです。問題は、何がアクセスに問題があるのか​​わからないことです。

どんな助けでも大歓迎です!