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

ios - [nsInputStream close]が別のスレッドによって呼び出された場合、[nsInputStream read:...]を返す必要がありますか?

ソケット接続のもう一方の端に関係なく、ストリームが別のスレッドによって閉じられた場合、NSInputStreamオブジェクトはread:メソッドからポップアウトする必要があるように思われます。しかし、場合によっては、これは真実ではないように見えます。相手側が接続の前に少なくとも1回何かを最初に送信しない限り、read:メソッドはストリームの終了に応答しないようです。

接続を開くためのコード:

接続を閉じるためのコード:

受信スレッド:

メインスレッドからストリームを閉じようとすると、受信スレッドはreadメソッドのままになります。最終的にはタイムアウトしてクラッシュします。クラッシュしても、どのような種類のオブジェクトもスローされません(コードを囲んで何か(id)をキャッチしようとしましたが、何も得られませんでした)。

ストリームが閉じられるたびに、どのようにして読み取りを確実に強制的にポップアウトさせるのでしょうか。

さらに:

私は5.1iPadシミュレーターを備えたMLでXCODE4.4.1を使用しています。

inputStreamを閉じるだけで、リリースまたはnilに設定しない場合、問題も発生します。

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

ios - ストリーム バイトを取得してイメージに変換する方法 - IOS

ストリームバイトを取得して画像に変換する方法、以下は私のコードです。しかし、私が得る画像は空白です。なんで?コードの何かが間違っていますか?

NSOutputStream からバイトを取得し、NSData に変換してから、NSData を画像に変換します。

}

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

objective-c - NSInputStream 読み取り: maxlength: maxlength よりも多くのバイトを返します

ネットワークソケットから読み取るために(CFReadStreamRefに基づいて)NSInputStreamを使用しているiOSアプリがあります。サーバーからデータを取得し続け、読み取りと処理を続けます ( read:bytesBuffer maxLength:lを使用)。最初の数回は正常に動作しますが、約 20 ~ 25 回目の読み取りで、このメソッドは、たとえば 1 ~ 3MBytes最大値を実際に要求したときに、 4,294,967,295バイトなどの膨大な数のバイトを読み取ったと報告します。これは奇妙で、NSInputStream/CFReadStream API のバグのようです。

これらすべてのバイトを、返されたバイト数に割り当てられていないバッファーにロードしようとすると、最終的にアプリがクラッシュします (そして、サーバーはそもそもこのようなバイト数を返していません!)

以前にこの問題に遭遇した人はいますか?

ありがとう!

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

ios - NSInputStreamのNSStreamEventHasBytesAvailableが呼び出されることはありません

WiTapに似たアプリを作成しています(ただし、多くのデバイスを接続するため)。問題は次のとおりです。アプリケーションがデバイスを接続しているようです(テーブルビューコントローラーに表示されます。の代理人はNSInput/OutputStream、両方のストリームが開いていると言いますが、パケットを送信するとでNSOutputStream反対側のデバイスの関数よりも呼び出されNSInputStreamません。(NSStreamEventHasBytesAvailible- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode)

これが接続と送受信を行っているコードです...

Instruments(ネットワークのもの)を使用してプロジェクトをデバッグしようとしました。パケットは送受信されますが、イベントは発生しません。ご協力ありがとうございました。誰かが望むなら、私はプロジェクト全体を送るのに問題はありません...

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

iphone - 動画を iDevice から FTP にアップロードする

ユーザーがビデオをFTPサーバーにアップロードするためのAPPに取り組んでいます

これまでのところ、すべてがほぼ完了していますが、ユーザーがビデオ (.MOV) をアップロードした後、ファイルを開いて再生できないという問題が 1 つあります。

QuickTime Player が返すエラー メッセージは、「ムービーのファイル形式が認識されないため開けません」です。

私のコードでは、ALAssetsLibrady を使用してユーザーが動画を選択できるようにしています。

次に、ビデオを ALAsset オブジェクトにロードします。アップロードを開始する前に、ビデオを ALAsset から NSInputStream オブジェクトにロードします。コードは次のとおりです。

次のステップは、NSOutputStream を設定して開き、次のコードでアップロード操作を処理することです。

エラーは発生しません。ビデオ ファイルは正しいファイル サイズと名前で FTP にアップロードされますが、開くことができません。

手がかりを知っている人はいますか?

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

iphone - Objective-CでレンダリングされたWebサイトのHTMLコードを1行ずつどのように読み取りますか?

そのため、JavaでWebサイトのレンダリングされたhtmlソースコードを読んだ豊富な経験があります。しかし、Objective-Cでまったく同じことを行う方法について徹底的に調査し、機能するはずのソリューションを考え出すことができましたが、そうではありません。たとえば、「view-source:www.apple.com」のように、各行を読みたいという考えです。そのページの結果を1行ずつ読みたいのです。Htmlパーサーなどは必要ありません。これが私が持っているものです。

これは正常に実行およびコンパイルされますが、結果は常に0です。繰り返しますが、私は多くの調査を行ったので、結果が0である理由がわかりません。助けていただければ幸いです。

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

ios - NSInputStream を使用した NSXMLParser のストリーミング

アップデート:

NSXMLParserクラス メソッドを使用するinitWithContentsOfURLと、XML フィードのダウンロード時に解析するのではなく、XML ファイル全体をメモリにロードしてから解析プロセスを開始しようとするように見えます。これは、XML フィードが大きい場合に問題になります (大量の RAM を使用している、ダウンロードと並行して解析するのではなく、ダウンロードが完了してから解析を開始するため、本質的に非効率的であるなど)。

を使用してフィードがデバイスにストリーミングされているときに解析する方法を発見した人はいNSXMLParserますか? はい、LibXML2(以下で説明するように)使用できますが、 で実行できるはずNSXMLParserです。しかし、それは私を逃れています。

元の質問:

私はNSXMLParser、Web ストリームから XML を読み取るために使用することに取り組んでいました。を使用する場合initWithContentsOfURL、インターフェイスから Web から XML をストリーミングすることが推測される可能性がありますが、そうではないように見えますが、解析が行われる前に最初に XML ファイル全体を読み込もうとしているように見えます。適度なサイズの XML ファイルの場合は問題ありませんが、非常に大きな XML ファイルの場合は問題があります。

Web からストリーミングされているカスタマイズされたものNSXMLParserと組み合わせて使用​​するという議論を見てきました。たとえば、次の Cocoa Builder の投稿やApple Stream Programming GuideのSetup Socket Streamsの説明で言及されているようなものを使用することを提案する回答がありましたが、私はそれを機能させていません。を使用する独自のサブクラスを作成しようとしましたが (それ自体は、ストリーミングがかなり得意です)、 と組み合わせて動作させることはできませんでした。initWithStreamNSInputStreamCFStreamCreateBoundPairNSInputStreamNSURLConnectionNSXMLParser

最終的に、Apple XMLPerformance サンプルLibXML2で示されているように、ではなくを使用することにしましたが、. からを取得するまでのすべてを示唆する「理論的には x を実行できます」という種類の回答をたくさん見てきましたが、 を使用したスト​​リーミングの実際デモにまだ遭遇していません。NSXMLParserNSXMLParserCFStreamCreateBoundPairHTTPBodyStreamNSURLRequestNSXMLParser

Ray Wenderlich の記事How To Choose The Best XML Parser for Your iPhone ProjectNSXMLParserは、それが大きな XML ファイルにはあま​​り適していないことを確認しているようですが、非常に大きな XML ファイルNSXMLParserをストリーミングするための可能なベースの回避策についてのすべての投稿で、私は'驚いたことに、これの実際のデモンストレーションをまだ見つけていません。NSXMLParserWeb からストリーミングする機能する実装を知っている人はいますか? 明らかに、私は、LibXML2または他の同等の XML パーサーを使用することができますが、ストリーミングの概念は、興味をNSXMLParserそそられるほど近いようです。

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

ios - iOSデバイスから複数の大きな画像をアップロードするための支援が必要

alassetライブラリを使用してiphone画像ギャラリーのすべての画像URLを正常にフェッチし、配列に保存しました。今、私はサーバーにアップロードしようとしています、これが私のコードです:

2つのアプローチを試しましたが、クラッシュログがなく、約10枚の画像を繰り返した後に両方がクラッシュしました。画像はサーバーにアップロードされません。アップロードする前にクラッシュします。

1:

2:Afnetworkingの使用

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

java - iOS で NSOutputStream に書き込んでいるときに NSInputStream を読み取るにはどうすればよいですか?

Android アプリを iPhone に移植しています (Android バージョンに基づいて iPhone アプリを改善するようなものです)。大きな非圧縮オーディオ ファイルを分割して結合する必要があります。

現在、すべてのファイルをメモリにロードして分割し、別々の関数に結合しています。100MB以上のファイルでクラッシュします。

これを行うために必要な新しいプロセスは次のとおりです。

2 つの録音 (file1 と file2) と、file2 を file1 内に挿入する分割位置があります。

-file1 と file2 の入力ストリームと、outputfile の出力ストリームを作成します。

- 新しい CAF ヘッダーを書き換えます

-分割ポイントに到達するまでinputStream1からデータを読み取り、そのすべてのデータを出力ファイルに書き込みます。それを出力ストリームに書き込みます。

-inputStream2 からすべてのデータを読み取り、出力ファイルに書き込みます。

-inputStream1 から残りのデータを読み取り、出力ファイルに書き込みます。

プロセスの Android コードは次のとおりです。

そして、これは私の writeBytesToLimit 関数です:

iOSでこれを行うにはどうすればよいですか? 2 つの NSInputStream と 1 つの NSOutputStream に同じデリゲートを使用すると、非常に面倒になるようです。これを行う(そしてきれいにする)方法の例を見た人はいますか?

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

ios - IOS NSInputStream

NSInputStream の使用時に問題が発生しました。サーバーに接続するクライアントアプリがあり、サーバーはTCPを介してクライアントアプリにメッセージを1秒あたり約1メッセージ繰り返し送信し始めます。サーバーはクライアントにメッセージをブロードキャストしているだけで、メッセージは xml 形式です。サーバーはメッセージを 1 つのパケットとして送信します。

ここでの問題は、NSInputStream からバイトを読み取ると、データが切り捨てられたことです。これは、1 つの完全なメッセージを受信する代わりに、時々 2 つの個別のデータ (部分的な xml) の応答を得たことを意味します。NSInputStream からデータ バイトを読み取ったときに既に発生しているため、デバッグできません。

Wireshark を使用して受信したすべてのパケットを分析しますが、TCP が部分的なデータをクライアントに再送信するため、データも切り捨てられます。すべての部分データ バイトをログに記録しようとしましたが、部分データの合計は常に約 1600 バイトです。

彼らがどのようにサーバー側を設計および実装したかはわかりませんが、多くの人がそのサーバーに接続し、そこからブロードキャストメッセージを継続的に取得していることは知っています.

誰でもこの問題に遭遇しますか? 誰でも助けることができますか?データが最大サイズを超えて分割される可能性はありますか?