問題タブ [bufferedoutputstream]

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

java - BufferedOutputStreams の使用時に ObjectInputStream が初期化されない

ゲームのソケットを介してオブジェクトを送信しようとしていますが、送信に時​​間がかかり、ゲームがハングする可能性があります。BufferedOutputStreams と BufferedInputStreams を使用してデータを送信したいのですが、クライアント側で BufferedOutputStream を使用すると、サーバー側で ObjectInputStream が初期化されません。奇妙なことは、エラーがスローされないことです。

関連するコードのみを提供します。そうしないと、何が起こっているのかを説明するのに長い時間がかかるからです。ゲームごとに 2 つのクライアントが初期化されます。

私はすべてのフォーラムを調べてきましたが、うまくいくものを見つけることができませんでした。あなたが与えることができるどんな助けにも感謝します!

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

java - ソケット: BufferedOutputStream または単に OutputStream?

Java で TCP を介して最速の転送速度を得るには、こちらの方が優れています。

オプション A:

オプション B:

8 KiB を超えて OutputStream に書き込むとパフォーマンスが低下することを読みましたが、一度に 8 KiB を超えるのではなく、小さなチャンクで書き込むことをお勧めしました。8 KiB は、BufferedOutputStream のデフォルトのバッファー サイズです。

ただし、ネット経由でデータを転送するときは、できるだけ早くバイトをフラッシュするのが良いことも読んだことがあります。バッファを使用して小さなチャンクで書き込むと、不要なオーバーヘッドが追加されることを意味します。

では、選択肢 A か選択肢 B か。どれが一番うまくいきますか?

現時点では、オプション A がオプション B よりもはるかに多くの CPU を消費しながら最高の転送速度を提供すると推測しています。

--

おまけの質問: TCP ウィンドウ サイズに手を加えるのは良い考えですか? たとえば、64 KiB に設定すると、次のようになります。

速度を上げることができると読んだので、テストマシンで128 KiBに設定しようとしましたが、サーバーがいくつかの接続を取得したとき、CPUは放置したときのように〜2%ではなく100%でした. トラフィックの急増を処理できる優れたサーバーがない限り、128 KiB は高すぎると思いますが、32 KiB のような値に設定するのは賢明でしょうか? 私の場合、デフォルトは 8 KiB だったと思います。

(「ソケット」は「java.net.Socket」)

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

java - BufferOutputStream は、ファイルをマージするときにゼロバイトを書き込みます

n個のファイルをマージして単一のファイルにしようとしています。しかし、関数で奇妙な動作が発生しました。関数はn秒間にx回呼び出されます。マージするファイルが 100 個あるとします。毎秒 5 つのファイルを呼び出してマージします。次の 1 秒で量は 2 倍の 10 になりますが、1 ~ 5 は前と同じファイルで、残りは新しいファイルです。それは正常に動作しますが、ある時点でゼロバイトになるか、適切なサイズになります。

以下の関数の間違いを見つけるのを手伝ってくれませんか?

*私の英語でごめんなさい

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

java - java Socketクラスのsendbuffersizeはどのくらいの大きさに設定できますか?

FTPライブラリを使用してファイルを転送するアプリケーションがあります。ファイルの受信はうまく機能し、ほとんどの場合ファイルの送信も機能します。この問題は、アプリケーションがハングする大きなファイル(3 MB)を送信しようとしたときに発生します。エラーメッセージも何もありません。デバッグしたところ、のsocketWrite0()メソッドで停止することがわかりましたjava.net.SocketOutputStream。このメソッドは決して戻りませんが、ハング/ブロックするだけです。呼び出し元: ファイルの転送が開始されますが、2回目は転送スレッドが停止し、socketWrite0()メソッドに到達するとハングします。コンストラクターでパラメーターを送信してBufferedOutputStreamのバッファーサイズを調整しようとしましたが、このサイズは関係ないようで、常に2回目のフラッシュで停止します。
java.io.BufferedOutputStream write() which calls
java.io.BufferedOutputStream flushBuffer() which calls
java.net.SocketOutputStream write() which calls
java.net.SocketOutputStream socketWrite() which calls
java.net.SocketOutputStream socketWrite0()

java.io.BufferedOutputStream flushBuffer()

次に、SocketsetSendBufferSizeを3000 000に設定しようとしましたが、突然、BufferedOutputStreamサイズがデフォルトで、すべてが正常に機能しました。このバッファサイズをファイルサイズよりも大きいサイズに設定している限り、ファイルは転送され、すべてが正常です。バッファサイズを400000に設定すると、この量が転送された後に転送が停止します。

BufferedOutputStreamバッファーを無制限に増やすことはできません。これを大きく設定しすぎると、同じことが起こります。アプリケーションがsocketWrite0()でハングします。

  1. 誰かが理由を説明できますか?
  2. ソケットバッファサイズはどのくらい大きくできますか?制限は何ですか?
  3. BufferedOutputStreamバッファーとSocketバッファーはどのように関連していますか?

どうもありがとうございます!

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

java - 行末 ''\n' を読み取らないのはなぜですか

このコードは、ファイルを読み取ってから出力ファイルに戻そうとしています。それを(反転せずに)書き込むと、出力は同じです。しかし、逆にすると、出力は出力ファイルの 1 行にすべて書き込まれます。

私は使用BufferedInputStreamしていますBufferedOutputStream

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

logback - logbackのFileAppenderによって使用されるBufferedOutputStreamの基になるバッファサイズを変更するにはどうすればよいですか?

ロギングフレームワークとしてログバックを使用しています。FileAppenderがBufferedOutputStreamに裏打ちされたResilientFileOutputStreamを使用していることに気づきました。ログバックのパフォーマンスを調整できるように、このBufferedOutputStreamインスタンスのバッファーサイズを構成する方法があるかどうか疑問に思っています。

ありがとう

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

java - Java Micro Edition 3.2 SDK での BufferedOutputStream の置き換え

Java Micro Edition SDK には、java.io.BufferedOutputStream が含まれていません。SDK内に存在する適切な代替品を知っている人はいますか?

http://docs.oracle.com/javase/1.5.0/docs/api/java/io/BufferedOutputStream.html

ありがとう、

アダム

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

java - BOS/BIS 進行中

BufferedInputStream と BufferedOutputStream を使用したアップロードがあり、このアップロードの進行状況をパーセンテージで取得したいと考えています。

これはどうやって手に入れるの??

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

java - BufferedOutputStreamを使用してヘッダーの一部を書き込む方法は?

BufferedOutputStream を使用して、オフセット OFFSET にある同じバイト数のファイルを置き換えるために、〜 20000 バイトを書き込みたいと考えています。私は次のコードでこれをやろうとします:

ただし、これにより、「file.dat」が ba の内容によって上書きされ、ファイル全体が上書きされ、ba. 私は何を間違っていますか?