我正在使用带有HttpPut的Apache DefaultHttpClient来使用REST API上传文件。从Windows运行时它非常慢,它发送240 kb /秒。但是当我从MAC
运行相同的文件时,它会发送950 kb /秒我没有明确的Windows和Mac OS条件。
任何人都可以帮我解决这个问题。
我的代码:
HttpPut putRequest = new HttpPut("http://my.localhost.com:8888");
FileEntity reqEntity = new FileEntity("c:/test/test.zip","text/plain");
putRequest.setEntity(reqEntity);
putRequest.addHeader("X-Auth-Token",strToken);
httpResponse = client.execute(putRequest);
mResponseCode = httpResponse.getStatusLine().getStatusCode();
答案 0 :(得分:3)
Java是Write once, run anywhere(WORA)。因此,Windows机器上的HTTP连接速度慢于Mac机器的原因与Java无关。
可能有几个Windows机器问题会降低上传速度。我建议你在elevated命令提示符下按顺序运行以下命令。
禁用接收方缩放:
netsh interface tcp set global rss=disabled
禁用TCP / IP自动调整:
netsh interface tcp set global autotuninglevel=disabled
禁用所有任务卸载:
netsh int ip set global taskoffload=disabled
可以找到有关上述命令的更多详细信息here。
如果问题仍然存在,那么你应该
Shishir
答案 1 :(得分:2)
您是否在Windows计算机上运行了防病毒应用程序?首先尝试禁用,看看是否有任何差异。
答案 2 :(得分:0)
我会尝试这个命令。
netsh int tcp set global autotuninglevel=disabled
如果它没有区别,只需重新启用它
netsh int tcp set global autotuninglevel=enabled
自动调整有时会导致Windows上的TCP问题(坦率地说,我不知道它到底是什么)但是它在过去引起了一些类似的问题,所以也许值得一试。诚然,这可能是很多事情。
更改后你必须重启。
答案 3 :(得分:0)
我认为您的问题与NIC的驱动程序有关,而与Java无关。
转到开始 - >控制面板 - >设备管理器 - >网络适配器 - >您的网卡,右键单击,然后选择属性。
转到“高级”标签。
使用特定于您网卡的设置进行播放,因此我们无法真正帮助您完成设置。你可能会有一些名为" Large Send Offload(IPv4)"可以被禁用。