問題タブ [stream]

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 投票する
3 に答える
5003 参照

c++ - wfstream からバイナリデータを読み取るにはどうすればよいですか?

ファイルからデータを読み取るのに少し問題があります。wstring だけでなく、任意のサイズ (サイズはバイト単位) の生データのチャンクも読み取れるようにしたいと考えています。

おそらく、間違ったストリームを使用しているか、それらの線に沿った何かを使用しています。基本的に、wstring、データのサイズ (バイト数は任意) を読み取り、その後にそのバイト数のコンポーネント データを読みたいと考えています。明らかに、テンプレートは wchar_t を想定しているため、char を読み取ることはできません。

wchar_t を読み取ることはできますが、データが sizeof(wchar_t) によって整列されていることを確認する必要があります。そうしないと、ストリームが破損する可能性があります。シナリオは、データが 15 バイトの場合です。次のデータ チャンクを読み取れるようにするには、16 バイトを読み取り、不要なバイトをマスクし、ストリームを 15 バイトのオフセットまでシークする必要があります (可能な場合は、テンプレート化された wchar_t を使用しますか?)。

明らかに、私がやろうとしていることを達成するためのより良い方法があるはずです.

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

.net - NetworkStream.DataAvailable はバッファリングされたデータを認識しますか?

NetworkStream.DataAvailable は、送信者の送信バッファが空かどうかを認識していますか? それとも、受信側の読み取りバッファにデータがあるかどうかを単に示していますか? 私の推測は後者です...

具体的には、進行中の会話を含む一部のソケット作業では、現在、受信者が現在のバッチ内のデータ量を正確に把握できるように、長さプレフィックスを使用しています。ただし、代わりに NetworkStream.DataAvailable を使用することを提案する .patch が送信されました。私の懸念は、これは送信者が最初に送信したものではなく、受信者が何を持っているかを教えてくれるだけだということですが、私はソケットの専門家ではありません。

私が間違っている?それとも、length-prefix が進むべき道ですか?

(複数のバッチが同じ接続で送信されるため、ストリームが閉じられるまで単純に Read() できないことに注意してください。各バッチを個別に扱うことが重要です。1 つのバッチで読みすぎた場合 (たとえそれがバッファリングされて破棄されます)、会話は中断されます)。

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

view - ビューとストリームを比較する

クリアケースを使用しています。スナップショット ビューがあります。このビューをストリームと比較して、変更されたファイルを見つける方法はありますか?

TortoiseSVN では、これは「変更の確認」と呼ばれ、ローカル コピーとリポジトリにあるものとのすべての違いを示します。

0 投票する
4 に答える
2115 参照

c - パディング - 暗号化アルゴリズム

「ストリーム」で動作する XXTEA 暗号化アルゴリズムの実装を書いています。つまり、crypt mykey < myfile > 出力のように使用できます。

必要条件の 1 つは、ファイルにまったくアクセスできないことです (EOF が見つかるまで、固定サイズのブロックのみを読み取ります)。アルゴリズムでは、データ バイトが 4 の倍数である必要があるため、パディングを追加する必要があります。

プレーン テキストの場合、適切な解決策は NULL をパディングし、復号化では NULL を無視することですが、バイナリ ストリーム (埋め込まれた NULL を含む可能性がある) には同じ戦略を使用できません。

欠落している文字の数をパディングする(3文字が欠落している場合は、最後に3、3、3を追加する)などの一般的な解決策を読みましたが、もっとエレガントな解決策はありますか?

0 投票する
9 に答える
162367 参照

.net - C# を使用してストリームからオーディオを再生する

データを一時的にディスクに保存せずに、たとえばWebRequest から返されたSystem.IO.Streamからオーディオ (MP3 など) を直接再生する方法は C# にありますか?


NAudioを使用したソリューション

NAudio 1.3を使用すると、次のことが可能になります。

  1. URL から MP3 ファイルを MemoryStream にロードする
  2. MP3 データの読み込みが完了したら、Wave データに変換します。
  3. NAudioの WaveOut クラスを使用してウェーブ データを再生する

半分ロードされた MP3 ファイルを再生できればよかったのですが、 NAudioライブラリの設計上、これは不可能のようです。

そして、これは仕事をする関数です:

0 投票する
4 に答える
414 参照

linux - Linux で利用できる標準ストリームをプロセス レベルで制限することはできますか?

stdin、stdout、および stderr (それ以上でもそれ以下でもない) にのみアクセスできる Linux プロセスを生成できるようにしたいと考えています。プロセスレベル自体でこれを行うことはできますか? また、生成されたプロセスがストリームの反対側が指す「もの」を変更できるようにしたくないことを暗黙のうちに述べています(矛盾した表現)。

比喩的に:

  • プロセスにはどこかから来る入力パイプがあり、パイプがどこから始まるかを変更できないため、入力がどこから来るかを制御できません。
  • プロセスには出力パイプとエラーパイプがあり、出力パイプのもう一方の端が指す場所を変更できないため、出力先を制御できません。
  • 新しいパイプを作成することはできません。

私は現在SElinuxも検討しています。これにより、これら 3 つのストリームにのみアクセスできるプロセスを作成できますか? ありがとうございました。

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

c# - FileStream を使用して、排他ロックなしでファイルに追加するにはどうすればよいですか?

FileStreamが C#/.NET でやろうとしているのは、2 つのストリームを開くことです。1 つはファイルに追加し、もう 1 つはそれらの書き込みを非同期的に読み取ります (ネットワーク接続処理コードの単体テスト用)。ライターストリームを取得して非排他的ロック モードでファイルを開く方法がわからないため、コードは常に例外をスローします。

別のプロセスで使用されているため、プロセスはファイル 'C:\test.txt' にアクセスできません。

問題を示すコードの一部を次に示します。

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

java - Jabber への Java 接続

TCPソケットを介して接続要求メッセージをjabberに書き込むために使用する必要があるストリームのタイプ。xml形式の文字列を書いています。デフォルトのソケット ストリームまたは dataoutputstream で動作するはずですが、動作しません。

0 投票する
5 に答える
671280 参照

java - OutputStream を文字列に取得する

出力をjava.io.OutputStreamからJavaの文字列にパイプする最良の方法は何ですか?

私が方法を持っているとしましょう:

オブジェクトから特定のストリームに特定のデータを書き込みます。ただし、この出力をできるだけ簡単に String に取得したいと考えています。

私はこのようなクラスを書くことを考えています(未テスト):

しかし、より良い方法はありますか?テストを実行したいだけです!

0 投票する
6 に答える
4484 参照

java - dom4j を使用してストリームから単一の XML ドキュメントを読み取る

dom4j を使用してストリームから一度に 1 つの XML ドキュメントを読み取り、処理してから、ストリーム上の次のドキュメントに進みます。残念ながら、dom4j の SAXReader (裏で JAXP を使用) は読み取りを続け、次のドキュメント要素を停止します。

ドキュメント要素の終わりを見つけたら、SAXReader にストリームの読み取りを停止させる方法はありますか? これを達成するためのより良い方法はありますか?