2013-05-03 55 views
0

我的桌面Java應用程序文件上傳到一些服務器,我用簡單的輸出流做的Windows JVM是限制HTTP輸出流的上傳速度

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

在OSX或Linux它工作正常,但在Windows最大速度約爲1MB/s,但在同一行的OSX上速度超過4MB/s。

使用Java 6,但Java 7的或unofficil窗口OpenJDK的是相同

即時你有什麼想法我能做些什麼這個問題呢?

+0

你知道麻煩在java層嗎?你可以做一個ftp put或類似的比較批量TCP發送性能嗎? Windows沒有內置一些網絡節流功能嗎? – 2013-05-06 15:12:22

回答

1

它不可能告訴不知道任何細節,但我會先從參數玩:

  • 嘗試擴大緩衝區變量
  • 擴大插座的發送緩衝區:setSendBufferSize()
  • 播放與TCP選項:setTcpNoDelay(true/false)等
  • 確保問題是套接字,而不是I/O通過刪除讀取和只寫緩衝N次來生成足夠的數據。它可能是源設備太慢而不是套接字。