0

ファイルをサーバーにアップロードするためのデスクトップJavaアプリケーションがあり、単純な出力ストリームでそれを行います

socket.getOutputStream();
outputStream.write(buffer, 0, bytesRead);

OSX または Linux では正常に動作しますが、Windows では最大速度が約 1MB/s ですが、同じラインの OSX では 4MB/s を超えます。

私はJava 6を使用していますが、Java 7または非公式のWindowsでopenjdkは同じです

この問題で何ができるか分かりますか?

4

1 に答える 1

1

詳細を知らずに判断することは不可能ですが、パラメーターをいじり始めます。

  • バッファ変数を大きくしてみてください
  • ソケットの送信バッファを拡大します: setSendBufferSize()
  • TCP オプションで遊んでください: setTcpNoDelay(true/false) など。
  • 問題が I/O ではなくソケットにあることを確認し、十分なデータを生成するために、読み取りを削除してバッファを N 回書き込むだけにします。非常に遅いのはソース デバイスであり、ソケットではない可能性があります。
于 2013-05-03T17:40:18.890 に答える