最近有个想法, 想通过HTTP实现一边上传一边下载, 实现类似实时传输的目的。所以这里有两个问题: A,B为两个客户端, Web Server(以下简称WS)起到一个中转的作用1. A想传送一个文件给B, 这里用两个方法:
第一, A先将整个文件上传给WS, 上传完了然后通知B(先不关心怎么去通知), B去WS下载; 
第二, A开始向WS上传文件, B几乎同时开始去WS下载(假设不存在实现的问题),A上传完毕, B也基本上下载完毕;
这个两种方法相比较而言, 第二种比第一种快吗?快多少?2. 这里就讨论一下如何实现的问题, 比较概括来说(先不考虑多用户的问题),
WS使用RandomAccessFile来保存A上传的文件, 通过RandomAccessFile的length方法可以知道文件的实时大小(不停的写)。
B发送GET请求, servlet向response里写已经保存下来的文件, B接收的文件完整后结束。希望有哪位大侠有实现过这个想法, 有兴趣可以一起讨论。

解决方案 »

  1.   

    我感觉一般情况下,第二种方法会比第一种快。
    不过,是两个不同的客户端,所以第二种方法也不能算“一边上传,一边下载”了。应该算是
    WebServer的基本功能了,只要解决同步问题就行了,就是避免下载者下载速度比上传速度快。
      

  2.   

    原理类似于传送文件,A端通过代理将文件传到中转服务器(也就是WS)的同时发送给B,可以参考Spark传送文件功能,就是在Stun穿透失败的情况下走代理