2013-05-03 52 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次来生成足够的数据。它可能是源设备太慢而不是套接字。