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) 等。
  • 通过删除读取并仅写入缓冲区 N 次以生成足够的数据,确保问题出在套接字而不是 I/O。可能是源设备太慢而不是套接字。
于 2013-05-03T17:40:18.890 回答