問題タブ [inputstream]
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.
java - 可変長メッセージの解析
この仕様でJava を使用して BitTorent プロトコルを実装しています。メッセージ セクションでは、2 つのメッセージを除いてすべてのメッセージが固定長です。そのうちの 1 つは、ハンドシェイク後の唯一の可変メッセージであるため、他のメッセージを確認して、他のメッセージが一致しなかった場合に、それがピース メッセージであると想定できます。しかし、次のメッセージについては
ビットフィールド メッセージは、ハンドシェーク シーケンスが完了した直後で、他のメッセージが送信される前にのみ送信できます。これはオプションであり、クライアントにピースがない場合は送信する必要はありません。
ビットフィールド メッセージは可変長で、X はビットフィールドの長さです。ペイロードは、正常にダウンロードされた部分を表すビットフィールドです。最初のバイトの上位ビットはピース インデックス 0 に対応します。クリアされたビットは欠落ピースを示し、セットされたビットは有効で利用可能なピースを示します。最後の予備ビットはゼロに設定されます。
間違った長さのビットフィールドはエラーと見なされます。正しいサイズでないビットフィールドを受信した場合、またはビットフィールドに予備のビットが設定されている場合、クライアントは接続をドロップする必要があります。
長さがわからないと解析する方法が思いつきません。バイトストリームで id を見つけるにはどうすればよいですか?
編集: ビットフィールド メッセージのペイロードでは、トレント ファイル内の各ピースの 0 または 1 であり、トレント コンテンツのサイズに応じてメッセージの長さが変わります。したがって、ピースの数が常に5バイトの数値に収まるとは思えません。
java - Process stdoutInputStreamをNIOByteBufferに読み込むことは可能ですか?
NIOを使用してプロセスからstdoutを処理することは可能ですか?私はそれをjava.ioで動作させていますが、これはNIOについてもう少し学び、パフォーマンスの向上の可能性を探求するための演習のようなものです。
基本的に、大量のテキストをstdoutからバッファにブロックせずにできるだけ速くストリーミングし、後でそのバッファの内容を処理したいと思います。問題は、NIOで動作させるための適切なブードゥーを理解できないようです。これが私が今いるところです:
StreamConsumerクラスは次のようになります。
java - Java で Unix コマンドを繰り返す
JavaでUnixコマンド(ps
私の場合)を定期的に実行する方法はありますか? 私が書いたループ:
動作しません。最初は完全に正常に実行されますが、その後は毎回入力ストリームから 0 バイトが利用可能になります。コマンドを試してみたいのwatch
ですが、この Solaris ボックスにはそれがありません。Java アプリケーションに PID があるかどうかを知る必要があるため、cron ジョブを使用できません。何か案は?
前もって感謝します。
編集: cron ジョブを使用できません
編集:Thread
終了後に同じタイプ(PS)の新しいものを作成しているので、毎回新しい ProcessBuilder を確実に作成しています。
編集:混乱の原因となったので、機能しなかったループを元に戻しました。
c# - C#でストリームをバイト[]に変換する方法は?
C# でStream
a を aに変換する簡単な方法または方法はありますか?byte[]
java - InputStream のサイズを決定する
私の現在の状況は次のとおりです。ファイルを読み取って、その内容を に入れる必要がありますInputStream
。その後、の内容をInputStream
(私の知る限り) のサイズを必要とするバイト配列に配置する必要がありInputStream
ます。何か案は?
リクエストに応じて、アップロードされたファイルから作成している入力ストリームを表示します
リクエストはHttpServletRequest
オブジェクトでありFileItemFactory
、ServletFileUpload
Apache Commons FileUpload パッケージからのものです。
java - java: datainputstream: データを待っている間、読み取り呼び出しはプロセッサ時間を消費しますか?
DataInputStream で read() を呼び出した場合、データを待機するために CPU サイクルが消費されますか?それとも、現在のスレッドを明け渡し、データが到着したことを知らせる割り込みによってウェイクアップされますか?
私の動機は、ストリーム リーダーを独自のスレッドにする必要があるかどうかを判断することです。CPU 時間を消費するブロッキング読み取りは、メイン スレッドがハングアップするため、理想的ではありません。
関連する質問: メソッドがブロッキングとして記述されている場合、待機中にスレッドが解放されることを意味しますか? それとも契約・保証はありませんか?データを常にチェック/ポーリングするメソッドは、まだブロックされているように思えます。
java - WebページのコンテンツをJavaで文字列に読み込むための最適な方法は何ですか?
指定されたURLでHTMLページのコンテンツ全体をフェッチする次のJavaコードがあります。これはより効率的な方法で行うことができますか?どんな改善でも大歓迎です。
線の読みが最適ではないと感じずにはいられません。私はおそらく電話MalformedURLException
によって引き起こされたものを隠していることを知っていopenConnection
ます、そして私はそれで大丈夫です。
私の関数には、HTML文字列に現在のシステムの正しい行末記号を持たせるという副作用もあります。これは必須ではありません。
ネットワークIOは、HTMLの読み取りにかかる時間をおそらく短縮することを理解していますが、それでもこれが最適であることを知りたいと思います。
StringBuilder
ちなみに、オープンのコンストラクターがあれば、InputStream
のすべてのコンテンツを取得して、InputStream
それをに読み込むことができれば素晴らしいと思いStringBuilder
ます。
java - OutputStreamからInputStreamを作成する最も効率的な方法
このページ:http://blog.ostermiller.org/convert-java-outputstream-inputstream は、OutputStreamからInputStreamを作成する方法を説明しています。
他の選択肢は、面倒なPipedStreamsと新しいスレッドを使用することです。
多くのメガバイトを新しいメモリバイト配列にコピーするというアイデアは好きではありません。これをより効率的に行うライブラリはありますか?
編集:
Laurence Gonsalvesからのアドバイスにより、PipedStreamsを試してみましたが、それほど難しくはないことがわかりました。clojureのサンプルコードは次のとおりです。
java - InputStream read がデータを読み取らない
Java 入力ストリームからの読み取りに問題があります。サイズが 1024 のバッファーと、サイズが 29k ~ 31k の入力ストリームがあります。ループで inputStream を読み取りましたが、最初の読み取りでは 29 バイトしか取得できず、2 回目の読み取りでは 39 バイトしか取得できず、その後は何も取得されません。異なる InputStream に対して同じ動作が繰り返されます。(データを出力ストリームに書き込んでいますが、これが最初の読み取りにどのように影響するかわかりません)
私は何が欠けていますか?
どんな助けでも大歓迎です:)
java - Java で InputStream をバイト配列に変換する
InputStream
全体をバイト配列に読み込むにはどうすればよいですか?