等待从尚未创建的服务器下载文件的最佳方式?

问题描述:

我请求从服务器下载文件。 事情是在服务器端生成文件,并且生成是异步的。等待从尚未创建的服务器下载文件的最佳方式?

起初,我不喜欢的东西

try { Thread.sleep(10000); } catch (Exception e) { //TODO }

,然后我做新下载的文件的东西。

问题有时需要10多秒才能生成文件,有时需要更少的时间。所以我的“测试”会随机通过或失败。

我的第一次尝试,直到我发现在服务器中的文件,并有超时说2分钟后,执行多次要求(每1000个米利斯)。但我认为这是非常糟糕的设计。

那么,等待文件生成并下载它的最佳方式是什么?

编辑:我使用http通信。

+0

在我看来,你应该创建后台作业来获取文件。我必须做同样的事情。 – Ajit

阻塞I/O操作怎么样?

事情是这样的:

http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html

你如何与远程服务器进行通信?插座? HTTP?

编辑HTTP: 如果您也可以访问服务器端,您可以发送一个带有文件内容长度的HTTP标头,即使它没有被创建,所以客户端被“连接”创建。还要小心超时。你也可以直接输出(传输)文件(而不是等待它完成),这将消除我猜想的超时问题。

+0

HTTP ..我只是尝试做一个请求,并在服务器端重复检查,看看是否创建文件,所以仍然不知道要走的路。 – Fofole

+0

你也有权访问代码服务器端吗? – Maresh

+0

是的。我也控制了服务器。 – Fofole

除非您有办法接收通知(如亚马逊对其后台作业),否则轮询几乎是您可以做的唯一事情。

如果只是你正在谈论(而不是数分钟或数小时)秒,并把控制服务器侧,可以有请求处理块直到创建该文件。